2013-06-06 122 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