2015年5月21日 星期四

shell script中判斷命令是否正確成功的作法

首先先稍微了解一下 "1>/dev/null 2>&1"

0 = standard input (stdin)
1 = standard output (stdout)
2 = standard error (stderr)

"1>/dev/null 2>&1" 首先stdout的標準輸出的訊息會先丟到/dev/null,接著stderr的訊息也一起丟到stdout也就是丟到/dev/null,所以訊息不會顯示在螢幕上。

而/dev/null,是空裝置,是一個特殊的裝置檔案,它會丟棄一切寫入其中的資料。


======================================================================

下面我們寫一個簡單的範例來練習, 用一個正確的command($ok_cmd)以及故意寫一個錯誤的command($error_cmd),指令成功會回傳1,錯誤則回傳0,執行並判斷command是否正確。

程式碼如下:
#!/bin/sh

ok_cmd='ls -al'

error_cmd='ls --al'

if $ok_cmd 1>/dev/null 2>&1; then
    echo "ok_cmd is OK!."
else
    echo "ok_cmd is ERROR!."
fi

if $error_cmd 1>/dev/null 2>&1; then
    echo "error_cmd is OK!."
else
    echo "error_cmd is ERROR!."
fi



結果輸出:



沒有留言:

張貼留言