从 ssh 命令退出代码

exit code from ssh command

我正在尝试从此脚本中检索代码 return:

#!/bin/bash
echo "CM  1"
ssh -i key/keyId.ppk user@X.X.X.X "
grep blabla ddd
if [ ! $? -eq 0 ]; then exit 1; fi
"
echo $?

但是最后一个命令echo $? returns 0 而不是1.

如果尝试 运行 单独(不是作为脚本):

你知道为什么它在我的脚本中不起作用吗?

谢谢

这个代码

ssh -i key/keyId.ppk user@X.X.X.X "
grep blabla ddd
if [ ! $? -eq 0 ]; then exit 1; fi
"

在您的 shell 中评估 $? 而不是在远程的 shell 中,因为 $ 未在单引号中转义。您应该避免这种情况以达到所需的行为。一次是为了避免在本地 shell 中进行评估,第二次是为了避免在将其传递到远程端的 bash 时进行评估。或者更确切地说,将命令放入单引号中:

ssh -i key/keyId.ppk user@X.X.X.X '
grep blabla ddd
if [ ! $? -eq 0 ]; then exit 1; fi
'