在SSH的脚本中退出不起作用

我正在执行一个本地脚本,它通过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 }