簡體   English   中英

bash嵌套循環不起作用

[英]bash nested for loop not working

我寫了一個bash腳本來禁止路由器中的國家IP塊。

為什么以下方法起作用:

for ip in $(wget -qO- http://ipdeny.com/ipblocks/data/countries/cn.zone)
do 
    iptables -I wanin -s "$ip" -j DROP
done

但是以下我在多個國家/地區嵌套的信息卻沒有?

for country in CN AD
do 
    for ip in $(wget -qO- http://ipdeny.com/ipblocks/data/countries/$country.zone) 
    do 
        iptables -I wanin -s "$ip" -j DROP
    done
done

看到它是有條件的。 你有

for country in CN AD;

看到您在這里使用大寫字母。 如果您使用

for country in cn ad;

然后它應該工作。 嘗試一下鏈接不起作用的大寫字母區域小寫字母的字母區域

由於country應該是小寫字母,因此您可以像這樣添加declare -l country

declare -l country
for country in CN AD; do 
  for ip in $(wget -qO- http://ipdeny.com/ipblocks/data/countries/$country.zone); do
    iptables -I wanin -s "$ip" -j DROP
  done
done

或使用${var,,}參數擴展

for country in CN AD; do 
  for ip in $(wget -qO- http://ipdeny.com/ipblocks/data/countries/${country,,}.zone); do
    iptables -I wanin -s "$ip" -j DROP
  done
done

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM