我在脚本中遇到此错误iptable
。
./iptables-firewall.sh line 4: syntax error near unexpected token 'iptables'
./iptables-firewall.sh line 4: iptables -A OUTPUT -p udp -s $SERVER_IP --sport 1024:65535 -d $ip --dport 53 -m state -- state NEW, ESTABLISHED -j ACCEPT
在此代码上:
SERVER_IP="ppp"
DNS_SERVER="8.8.8.8"
for ip in $DNS_SERVER do
iptables -A OUTPUT -p udp -s $SERVER_IP --sport 1024:65535 -d $ip --dport 53 -m state -- state NEW, ESTABLISHED -j ACCEPT
iptables -A INPUT -p udp -s $ip --sport 53 -d $SERVER_IP --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT
done
答案1
do
infor
循环必须在它自己的一行上。
shell 无法猜测它是一个关键字还是一个名为 do 的参数。
写吧
SERVER_IP="ppp"
DNS_SERVER="8.8.8.8"
for ip in $DNS_SERVER
do
iptables -A OUTPUT -p udp -s $SERVER_IP --sport 1024:65535 -d $ip --dport 53 -m state -- state NEW, ESTABLISHED -j ACCEPT
iptables -A INPUT -p udp -s $ip --sport 53 -d $SERVER_IP --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT
done
另一种方法是用分号结束语句
for id in $DNS_SERVER ; do
...
答案2
$DNS_SERVER
在前后各加一个分号do
。