在bash中获取ssh命令的返回码

时间:2017-05-07 09:02:34

标签: bash macos ssh

我需要在bash脚本中获取ssh命令的返回/错误代码。该命令使用applescript将远程计算机上的文件移动到垃圾箱。这是一个更大的脚本的一部分:

ssh $login "bash -s" <<-EOF
    error=(osascript -e "tell application \"Finder\" to move POSIX file \"$remote_filepath\" to trash");
    [[ -n "$error" ]] && { echo -e "\nCannot move file to trash on remote mac"; exit 1; };
EOF
# echo $?; exit
[[ $? -ne 0 ]] && exit 1
# more code ...

如果osascript失败,我的目标是让ssh命令退出代码为1,这样我就可以捕获错误并中止脚本的其余部分。

ssh成功运行,文件确实已移至垃圾箱。显然osascript运行正常,因为没有显示错误消息。仍然,ssh返回代码是1(我用echo $?语句检查了它。这就是我被困住的地方。我很感激任何有关这里错误的见解。

1 个答案:

答案 0 :(得分:2)

问题是[[ -n "$error" ]]命令将错误代码设置为1.您需要使用该测试的否定。尝试:

[[ -z "$error" ]] || { echo -e ...