bash, error line, 錯誤行
因為bash為直譯式語言,當程式碼一多時,很難找出錯誤的行號
這時候可以借助TRAP ERR功能,當有函數或執行檔返回值不為0時
顯示出此行號以方便除錯
LINENO為內建變數,可以顯示出當前執行的行號
這裡透過一個trace_error函數來擷取返回值非0錯誤,丟入參數為LINENO
#!/bin/bash
function trace_error()
{
echo "Error occurs on line $1"
}
trap 'trace_error $LINENO' ERR
下面例子是故意寫出過濾不存在的字串,來看執行結果
#!/bin/bash
function trace_error()
{
echo "Error occurs on line $1"
}
trap 'trace_error $LINENO' ERR
echo "Hello"
echo "World" | grep -i halo
echo "Bye"
執行結果
Hello
Error occurs on line 11
Bye
最後附上沒加上TRAP ERR的版本做比對,很難找出哪一行出問題
#!/bin/bash
echo "Hello"
echo "World" | grep -i wtf
echo "Bye"
執行結果
Hello
Bye