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

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

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

现在在远程执行的情况下,我总是得到0作为echo $? 输出。

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

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

正如迈克尔·汉普顿(Michael Hampton)所指出的那样,单引号可以防止在将variables发送给远程命令之前对其进行评估,而双引号允许这样做