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

08-16 22:12