我正在执行一个本地脚本,它通过SSH执行第二个脚本:
RES=$(ssh user@destination 'bash -s 2>&1' < remoteScript.sh)
我需要第二个脚本(remoteScript.sh)以代码1退出,当我检测到一个错误,这就是为什么我build立了一个函数,经过一些微妙的计算后执行:
ErrorCheck() { if [ ! "$?" = "0" ] then exit 1 fi }
不幸的是,当remoteScript.sh执行继续时,出口1performance为返回指令。 根据我的testing,这与在远程脚本开始处使用sudo su – {user}有关。
我在这里做错了什么? 我怎样才能使这个function,结束remoteScript.sh?
编辑:
我正在添加一个非常有限的远程脚本示例。 我试过在本地运行它,它的工作原理。 它通过SSH运行只是失败。
sudo su - {user} DelicateFunction() { # The following instruction fails thisisanerror123 ErrorCheck } ErrorCheck() { if [ ! "$?" = "0" ] then exit 1 fi } printf "Executing DelicateFunction\n" DelicateFunction printf "I should not print!"
唯一不会退出的方法是在子shell中运行。 exit
保证退出它的shell。
顺便说一句,你可以写ErrorCheck
更简单:
ErrorCheck() { [ $? = 0 ] || exit 1 }