echo $? 远程执行时不起作用

echo $? 远程执行时不起作用

当我执行以下命令时,它会给出预期的输出,但是当我在远程服务器上运行相同的命令时,它总是echo $?给出0

locally
# <some command>
# echo $?

Remotely
# ssh server " <some command >; echo $? "

现在,如果发生远程执行,我总是会得到0输出echo $?

答案1

在将命令发送到远程计算机之前,将$?评估 。实际上,您正在发送命令echo 0。尝试

ssh server ' <some command >; echo $? '

正如迈克尔·汉普顿 (Michael Hampton) 指出的那样,单引号会阻止在将变量等发送到远程命令之前对其进行评估,而双引号则允许这样做。

相关内容