我的脚本包含一个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