Bash 如何获取通过ssh而不是ssh命令本身运行的命令的返回代码?

Bash 如何获取通过ssh而不是ssh命令本身运行的命令的返回代码?,bash,shell,Bash,Shell,我正在尝试编写一个bash脚本,其中的第一步是检查远程主机中是否存在文件,以及该文件是否可执行。这听起来像是test命令的工作,但我必须在它前面加上ssh。大概是这样的: $(ssh user@box 'test -x /path/thefile >/dev/null 2>&1; $?') 除了上面的内容似乎无法向我返回远程文件是否存在以及是否可执行……我该如何做?当您使用$()语法时,您得到的是命令的输出,而不是结果代码。您只需执行以下操作: if ssh user@bo

我正在尝试编写一个bash脚本,其中的第一步是检查远程主机中是否存在文件,以及该文件是否可执行。这听起来像是
test
命令的工作,但我必须在它前面加上
ssh
。大概是这样的:

$(ssh user@box 'test -x /path/thefile >/dev/null 2>&1; $?')
除了上面的内容似乎无法向我返回远程文件是否存在以及是否可执行……我该如何做?

当您使用
$()
语法时,您得到的是命令的输出,而不是结果代码。您只需执行以下操作:

if ssh user@box 'test -x /path/thefile'; then
  echo "It exists"
fi

除非有
ssh
错误(在这种情况下,退出代码是255),否则
ssh
的退出代码是远程进程的退出代码。您只是没有检查退出代码;您正在捕获标准输出。