使用反引号退出远程shell命令的状态

时间:2016-12-06 19:04:45

标签: linux bash shell

为什么以下命令返回0?鉴于$已转义,是否应该使用远程变量?它似乎使用了局部变量。

echo `ssh <user>@<hostname> "dat; echo \$?"`
bash: dat: command not found
0

虽然它在单引号中完美运作

echo `ssh <user>@<hostname> 'dat; echo $?'`
bash: dat: command not found
127

据我所知,最简单的方法是在退出时使用最后一个远程命令的退出状态来获取SSH本身的退出状态。

1 个答案:

答案 0 :(得分:1)

在反引号中使用双引号,字符串被引用两次,因此您需要双重转义它:

echo `ssh <user>@<hostname> "dat; echo \\$?"`