2013-06-06 60 views
1

我想写一个bash脚本,其中第一步是检查远程主机中是否存在文件,以及它是否可执行。这听起来像是test命令的工作,但我必须以ssh为前缀。事情是这样的:如何获得通过ssh运行的命令的返回码而不是ssh命令?

$(ssh [email protected] 'test -x /path/thefile >/dev/null 2>&1; $?') 

除上述似乎并不奏效,返回到我的远程文件是否存在,是否可执行...我会怎么做呢?

+0

除非'ssh'错误(在这种情况下,退出代码是255),'ssh' *的退出代码是*远程进程的退出代码。你只是不检查退出代码;你正在捕获标准输出。 – chepner

回答

2

当您使用$()语法时,您将获取该命令的输出,而不是结果代码。你可以这样做:

if ssh [email protected] 'test -x /path/thefile'; then 
    echo "It exists" 
fi