2013-02-19 95 views
13

所以我發現bash不處理異常(沒有try/catch)。 對於我的腳本,我想知道一個命令是否成功。有人可以在bash中解釋這個try/catch選擇嗎?

這是我的代碼,現在部分:

command = "scp -p$port $user:[email protected]$host:$from $to" 
$command 2>/dev/null 

if (($? == 0)); then 
    echo 'command was successful' 
else 
    echo 'damn, there was an error' 
fi 

我不明白的事情是:

  • 3行,爲什麼我必須把2背後的$command
  • 第5行,這個$究竟是什麼?
+0

如果你打算做的bash腳本,谷歌「SH教程」或「慶典教程」,或更硬核approacb'男人bash'。這些都是非常基本的細節,並且還有更多這樣的小細節,而不是你可以寫出的SO問題.. – hyde 2013-02-19 18:40:53

+0

'if((...))的用途是什麼?那麼......'?是'cmd;如果[$? == 0] ...'根本不同? – blong 2014-04-14 12:56:52

回答

25

$?表示上次執行的命令的返回碼。

2>表示將stderr(標準錯誤流)輸出重定向到/dev/null

+2

嗯,這是一個非常短的訪問在stackoverflow,謝謝! – 2013-02-19 18:22:33

+0

如果您對我的回答感到滿意,請標記爲答案:)我的榮幸先生 – legrandviking 2013-02-19 18:24:22

11

僅供參考,這也將工作:

if some_command 2>/dev/null ; then 
    echo 'command was successful' 
else 
    echo 'damn, there was an error' 
fi 
相關問題