当我执行一个命令如下,它给我一个预期的输出,但是当我在远程服务器上运行相同的命令,它总是给我echo $? 为0 。
locally # <some command> # echo $? Remotely # ssh server " <some command >; echo $? "
现在在远程执行的情况下,我总是得到0作为echo $? 输出。
$? 在将命令发送到远程机器之前进行评估。 实际上,您正在发送命令echo 0 。 尝试
ssh server ' <some command >; echo $? '
正如迈克尔·汉普顿(Michael Hampton)所指出的那样,单引号可以防止在将variables发送给远程命令之前对其进行评估,而双引号允许这样做