我的腳本包含一個ssh
登入遠端伺服器並執行一些命令的命令,該命令檢查檔案是否存在,如果不存在,它應該從整個腳本中出來。
ssh $user@$hostname "if[ -f $filename];then
echo"file exists Proceeding next steps;
else
"echo file doesn't exist";
exit 1;
fi"
但是,如果檔案存在,則上述命令會成功執行,但在其他情況下,如果檔案不存在,則退出命令只會從 ssh 會話中出來
它仍然繼續執行腳本中的其他命令,而不是退出腳本。
請幫我提出您的建議。
答案1
若要使用 ssh 執行腳本(需要事先設定某些變量,例如您的 )$filename
,請執行以下操作:
ssh user@host 'bash -s' < local_script.sh "$filename"
local_script.sh的內容:
#!/bin/bash
[ $# -ne 1 ] && echo '$0 needs at least 1 parameter' 1>&2 && exit 2
filename="$1"
if [ ! -f "$filename" ]; then
echo "[ $filename ] does not exist"
exit 1
fi
echo "[ $filename ] exists"
如果您不需要在要執行的命令中傳遞任何變量,則可以使用以下方法:
ssh user@host '
if [ ! -f "test/stuff" ]; then
echo "File does not exist"
exit 1
fi
echo "File exists"
'
注意單引號'
,它們會阻止你的命令被執行擴大。
我還檢查了第一個是否不存在,$filename
以減少程式碼行並使用製表符/空格。
為了讓你的命令更具可讀性,試試這個
ssh user@host <<'ENDSSH'
if [ ! -f "test/stuff" ]; then
echo "File does not exist"
exit 1
fi
echo "File exists"
ENDSSH