这是一个非常简单的脚本,但我似乎不能得到正确的。这个代码应该从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