bash - 嵌套Bash while循环,内层循环只是loop循环

标签 bash shell loops while-loop nested-loops

这是一个非常简单的脚本,但我似乎无法正确使用。这段代码应该打印出 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/

相关文章:

bash - 在 MongoDB 查询中使用 shell 变量

bash - AWK 如何执行和读取记录和字段

linux - 将尾部输出通过管道传输到当前正在运行的 bash 脚本

javascript - 如何将字符串添加到数组并返回字符串

java - 在集合中搜索同一对象的不同实例

bash - 如果两个命令行程序共享相同的名称会怎样?

linux - 如何仅在远程登录到 linux 时运行命令

unix - 在 UNIX 中查找所有包含字符的单词

bash - PBS中如何向特定节点提交作业

javascript - 嵌套在 WHILE 循环中的 IF 语句的结果让我感到困惑(Javascript)