为什么这不起作用?
$ ssh vm "bullshitcommand; echo $?"
bash: bullshitcommand: command not found
0
Run Code Online (Sandbox Code Playgroud)
我期望非零返回码。
原因:
echo $?,$?看来您实际上是在发送一个局部变量并要求在 ssh shell 中将其回显出来。您可以通过在 ssh 语句之前使用不存在的命令来证明这一点。例如:
notexistingcommand; ssh vm "echo $?" 产出
bash:不存在命令:找不到命令
127
甚至
export var=123; ssh vm "echo $var" 产出
123
解决方案:
使用远程变量可以做的是转义,这将吐出 -1(或 127):
ssh vm "nonexistentcmd; echo \$?"
或者您可以使用单引号 ( ' ),因为它们不会扩展变量并按字面意思使用 $ 符号
ssh vm 'nonexistentcmd; echo $?'