我需要在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 $?
语句检查了它。这就是我被困住的地方。我很感激任何有关这里错误的见解。
答案 0 :(得分:2)
问题是[[ -n "$error" ]]
命令将错误代码设置为1.您需要使用该测试的否定。尝试:
[[ -z "$error" ]] || { echo -e ...