如何跳过for循环中的某些元素?

时间:2011-04-18 07:50:20

标签: bash for-loop

#!/bin/sh
BLOCKDB="/opt/ip.blocked"
IPS=$(grep -Ev "^#" $BLOCKDB)
for i in $IPS
do
  sudo iptables -A INPUT -s $i -j DROP
  sudo iptables -A OUTPUT -d $i -j DROP
done

我需要在循环中添加一个额外的语句,以检查IP地址是否在iptables列表中,如果它已在内部,则继续循环。

检查声明是这样的:

iptables -L INPUT -v -n | grep $i

我怎么把它放在这里?

2 个答案:

答案 0 :(得分:3)

那么,问题是什么?如何继续或休息?

iptables -L INPUT -v -n | grep $i && continnue
例如

答案 1 :(得分:1)

尝试以下方法:

for i in $IPS
do
    sudo iptables -L INPUT -v -n | grep $i
    if [ $? -eq 0 ]
    then
        sudo iptables -A INPUT -s $i -j DROP
        sudo iptables -A OUTPUT -d $i -j DROP
    fi
done