如何在运行之前检查命令中的错误,例如,如果我想运行iptables命令,但是说有人在我制作的脚本变量中输入错误,例如&#34 ; asdiojaosdi"对于$ port变量,当脚本尝试将其插入iptables命令时,它会返回一个错误,我希望它回显"错误"
我希望语法检查这个巨大的命令
iptables -t nat -A PREROUTING -p tcp -d $filip --dport $port -j DNAT --to-destination $cusip && iptables -A FORWARD -p tcp -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT && iptables -t nat -A POSTROUTING -d $cusip -j SNAT --to-source $secip && iptables -t nat -A POSTROUTING -j SNAT --to-source $filip
答案 0 :(得分:1)
在IXish环境中,程序通常会在失败时返回与2
不同的值。预计错误消息将记录到标准错误,可以通过重定向文件描述符#!/bin/bash
program option1 option2 2>error.log.$$
result=$?
if [ $result -ne 0 ]; then
echo program failed with result=$result: $(cat error.log.$$)
rm error.log.$$
fi
来捕获。
您可以这样测试:
{{1}}