回声 $? 远程执行时不起作用

use*_*645 3 scripting bash shell-scripting

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

locally
# <some command>
# echo $?

Remotely
# ssh server " <some command >; echo $? "
Run Code Online (Sandbox Code Playgroud)

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

Sve*_*ven 10

$?之前的命令被发送到远程计算机进行评价。实际上,您正在发送命令echo 0。尝试

ssh server ' <some command >; echo $? '
Run Code Online (Sandbox Code Playgroud)

正如迈克尔汉普顿指出的那样,单引号可以防止在将变量发送到远程命令之前评估变量等,而双引号允许这样做。

  • 为了清楚起见,您应该使用单引号 `'` 而不是双引号 `"`。 (3认同)