[英]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.