例如,我在bash脚本中编写了一堆iptables规则。当我运行脚本时,shell说iptables: No chain/target/match by that name.
我不知道发生了什么,所以我将每一行复制并粘贴到shell中并单独运行它们以找出导致问题的行。 BTW。事实证明,我把“OUTUT”而不是“OUTPUT”放在一条规则中。
无论如何,shell可以告诉我[line 53]: iptables: No chain/target/match by that name.
,所以我知道问题出在哪里了?
答案 0 :(得分:0)
我不是bash专家,但我正在做的是添加echo
有关进度的信息和read
(等到按键),这将让我一步一步地完成这个过程。
答案 1 :(得分:0)
几乎所有程序都会返回成功和错误条件。您可以为脚本调用的每个程序包含错误检查,并对错误采取适当的操作(例如撤消以前的工作,退出等)。如果第3行失败,第4行永远不会执行,这一点特别有用。
您刚刚调用的程序的退出状态存储在$?中。
示例(伪代码 - 您需要修改语法才能正确)
Iptables foo bar baz; if ($? != 0) echo 'failed to update iptables' && exit 1; fi
另外,您可以使用set -f,set -v和set -x打开各种级别的跟踪。有关详细信息,请参阅以下链接。
http://tldp.org/LDP/abs/html/exit-status.html http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_02_03.html