这是一个非常简单的脚本,但我似乎无法正确使用。这段代码应该打印出 192.168.0.0 - 192.168.255.255 的 C 类 IP 地址,但打印出来的只是 192.168.0.0 - 192.168.0.255。由于某种原因,我的外循环不会循环。我敢肯定这是愚蠢的事情,但这可能对那些学习 shell 脚本中的嵌套循环的人有所帮助。欢迎任何其他建议!
#! /bin/sh
network_id="192.168."
count1=-1
count2=-1
while [ "$count1" -le 254 ]
do
count1=$(($count1+1))
while [ "$count2" -le 254 ]
do
count2=$(($count2+1))
printf "%s%s%s%s\n" $network_id $count1 "." $count2
done
done
exit 0
最佳答案
您没有重置 count2
。您的外循环运行了 256 次,但内循环运行一次后停止。
如果在关闭内部循环后添加 count2=-1
,它将按预期工作。
为清楚起见,我会移动您的增量,以便您清楚地在 0-255 之间迭代。我会这样写:
#! /bin/sh
network_id="192.168."
count1=0
count2=0
while [ "$count1" -le 255 ]; do
while [ "$count2" -le 255 ]; do
printf "%s%s%s%s\n" $network_id $count1 "." $count2
count2=$(($count2+1))
done
count2=0
count1=$(($count1+1))
done
关于bash - 嵌套Bash while循环,内层循环只是loop循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35192252/