2013-10-13 84 views
0

例如,我在bash腳本中寫了一堆iptables規則。當我運行腳本時,shell說iptables: No chain/target/match by that name.我不知道發生了什麼,所以我將每行都複製並粘貼到shell中,並分別運行它們以確定哪一行導致了問題。 BTW。事實證明,我把「OUTUT」而不是「OUTPUT」放在一個規則中。如何知道bash腳本中的哪一行導致麻煩?

有無論如何shell可以告訴我像[line 53]: iptables: No chain/target/match by that name.,所以我知道問題在哪裏?

+2

'bash的-x yourscript ARG1 ...'會告訴你相當不錯,一旦你習慣破譯輸出。 –

回答

0

我不是bash專家,但我正在做的是添加echo與關於進度的信息和read(等到keypressed),這將讓我一步一步地完成該過程。

0

幾乎所有的程序都會返回成功和錯誤條件。您可以爲腳本調用的每個程序包含錯誤檢查,並對錯誤採取適當的操作(如撤消以前的工作,退出等)。如果第4行在第3行失敗時不應執行,這一點特別有用。

剛剛調用的程序的退出狀態存儲在$? 。

例(僞代碼 - 你需要修改語法是正確的)

Iptables foo bar baz; if ($? != 0) echo 'failed to update iptables' && exit 1; fi 

此外,您可以打開不同級別與集-f跟蹤,設定-v的,並設置-x 。有關完整詳情,請參閱下面的鏈接。

http://tldp.org/LDP/abs/html/exit-status.html http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_02_03.html