-1
我在進入shell腳本的過程中遇到了第二個障礙。我似乎無法讓我的if語句爲空值評估爲true。我正在嘗試將參數傳遞給腳本,並讓腳本告訴我是否缺少所需的變量。不幸的是,它不斷下降到else語句,儘管它應該將變量評估爲空值。下面是該腳本:Bash腳本如果爲空,則爲true false
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 [email protected]:~/test/
fi
else
scp -r -i ~/Dropbox/Business/aws/first.pem ~/Dropbox/Business/aws/files/binaryhustle/ [email protected]:~/test/
fi
下面是我正在執行腳本的命令:'bash的copyfile.sh d
我得到的迴應是:
usage: scp [-12346BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file] [-l limit] [-o ssh_option] [-P port] [-S program] [[[email protected]]host1:]file1 ... [[[email protected]]host2:]file2
`
''-n''表示長度不爲零。你的意思是''-z''?同樣使用正確的shebang而不是用bash執行這個腳本。不要忘記''''是''test''命令,你可以在bash中使用'[[]]''。 –
@ Melbourne2991而且就像我之前說過的,請引用你的變量('「$ LOCAL」')。如果'LOCAL'獲得一個有空格的值,那麼你的命令將會運行一個錯誤。 – konsolebox
非常感謝,當你說使用正確的shebang時,你的意思是腳本的第一行應該有shell的位置。也是我寫的bash代碼的代碼?或shell代碼,不太確定:O。謝謝! – Melbourne2991