2012-10-09 21 views
2

我寫了一個shell腳本,我使用像rmls,等等。在這些命令失敗,我檢查返回狀態的情況下幾個命令「$?」 。但是如果腳本有一些語法錯誤,我怎麼能得到它的錯誤狀態?基本上,我將使用'source'命令從另一個腳本獲取此腳本。所以如果源代碼的腳本有任何語法錯誤,我想在控制檯中顯示它。有沒有辦法獲得這種狀態?在shell中,我執行了語法錯誤的腳本,我得到了像'missing ['的錯誤,但是當我執行echo $?它返回0作爲狀態時,這是行爲嗎?如果腳本有一些語法錯誤,我該如何獲得狀態?shell腳本錯誤狀態和語法檢查

+0

'source'在當前shell的上下文中執行另一個腳本的命令,因此您可以獲得命令的狀態。 如果你想看到sh/bash退出狀態,使用'sh腳本; echo $?' –

+0

糟糕,它沒有解決問題,後續的命令仍然執行 –

+0

所以,基本上你需要像'ret = $? [$ ret -eq 0] || exit $ ret' –

回答

2

可以使用-n選項採購前檢查shell腳本語法:

bash -n somescript # Works also for sh, ksh, zsh et al. 

會告訴你,如果somescript在語法上是好的,而不實際運行它。在程序中:

if bash -n somescript; then 
    . somescript 
else 
    printf '%s\n' "Uh-oh, somescript is not syntactically correct." >&2 
fi