gpt4 book ai didi

linux - Bash 脚本如果为 null,则为 true 时评估为 false

转载 作者:太空宇宙 更新时间:2023-11-04 05:31:03 27 4
gpt4 key购买 nike

我在 shell 脚本编写之旅中遇到了第二个障碍。我似乎无法让我的 if 语句对于空值评估为 true。我试图将参数传递给脚本,并让脚本告诉我是否缺少所需的变量。不幸的是,即使它应该将该变量评估为空值,它仍然会陷入 else 语句。这是脚本:

if [ "$1" == "d" ]; then

if [ -n "$2" ]; then
echo "Please enter the local location of the files"
else
LOCAL=$2
scp -r -i ~/Dropbox/Business/aws/first.pem $LOCAL ubuntu@54.XXX.194.202:~/test/
fi

else
scp -r -i ~/Dropbox/Business/aws/first.pem ~/Dropbox/Business/aws/files/binaryhustle/ ubuntu@54.XXX.194.202:~/test/
fi

这是我运行的用于执行脚本的命令:` bash copyfile.sh d

我得到的回复是:

用法:scp [-12346BCpqrv] [-c 密码] [-F ssh_config] [-i 身份文件]
[-l 限制] [-o ssh_选项] [-P 端口] [-S 程序]
[[user@]host1:]file1 ... [[user@]host2:]file2
`

最佳答案

总结一下评论,添加一个函数来消除代码重复:

#!/bin/bash

keyfile=~/Dropbox/Business/aws/first.pem
destination=ubuntu@54.XXX.194.202:~/test/
default_source=~/Dropbox/Business/aws/files/binaryhustle/

do_copy() {
source=$1
scp -r -i $keyfile "$source" "$destination"
}

if [ "$1" == "d" ]; then
if [ -z "$2" ]; then
echo "Please enter the local location of the files"
else
do_copy "$2"
fi
else
do_copy "$default_source"
fi

关于linux - Bash 脚本如果为 null,则为 true 时评估为 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18554352/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com