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
結果輸出:
沒有留言:
張貼留言