而
bash 可以表达类似的想法。 假设我们想按顺序显示五个数字-
从一到五的顺序。 一种 打坏 脚本可以构造如下:
#!/斌/庆典
# while-count: 显示一系列数字 count=1
而 [[ $count -le 5 ]]; 做 echo $count count=$((count + 1))
完成
回声“完成。”
#!/斌/庆典
# while-count: 显示一系列数字 count=1
而 [[ $count -le 5 ]]; 做 echo $count count=$((count + 1))
完成
回声“完成。”
执行时,此脚本显示以下内容:
[我@linuxbox ~]$ 计数
1
2
3
4
5
成品。
[我@linuxbox ~]$ 计数
1
2
3
4
5
成品。
的语法 而 命令是:
而 命令; 做 命令; 完毕
喜欢 if, 而 评估命令列表的退出状态。 只要退出状态为零,它就会执行循环内的命令。 在上面的脚本中,变量 数 创建并分配初始值 1。 而 命令评估退出状态 [[]] 复合命令。 只要 [[]] 命令返回零退出状态,循环内的命令被执行。 在每个循环结束时, [[]] 命令重复。 经过五次循环迭代后, 数 增加到 6 个, [[]] 命令不再返回零退出状态并且循环终止。 程序继续执行循环后的下一条语句。
我们可以使用 while循环 改善 阅读菜单 上一章的程序:
#!/斌/庆典
# while-menu:菜单驱动的系统信息程序
#!/斌/庆典
# while-menu:菜单驱动的系统信息程序
延迟=3 # 显示结果的秒数
而 [[ $REPLY != 0 ]]; 做
清除
猫<<- _EOF_
请选择:
1. 显示系统信息
2. 显示磁盘空间
3. 展示家居空间利用率
0. 退出
_EOF_
read -p "输入选择 [0-3] > "
如果 [[ $REPLY =~ ^[0-3]$ ]]; 然后如果 [[ $REPLY == 1 ]]; 然后
echo "Hostname: $HOSTNAME" 正常运行时间
睡眠 $DELAY
fi
如果 [[ $REPLY == 2 ]]; 然后 df -h
睡眠 $DELAY
fi
如果 [[ $REPLY == 3 ]]; 然后
如果 [[ $(id -u) -eq 0 ]]; 然后
echo "家庭空间利用率(所有用户)" du -sh /home/*
其他
echo "家庭空间利用率 ($USER)" du -sh $HOME
fi
睡眠 $DELAY
fi
其他
echo "无效输入。"
睡眠 $DELAY
fi
完成
echo "程序终止。"
延迟=3 # 显示结果的秒数
而 [[ $REPLY != 0 ]]; 做
清除
猫<<- _EOF_
请选择:
1. 显示系统信息
2. 显示磁盘空间
3. 展示家居空间利用率
0. 退出
_EOF_
read -p "输入选择 [0-3] > "
如果 [[ $REPLY =~ ^[0-3]$ ]]; 然后如果 [[ $REPLY == 1 ]]; 然后
echo "Hostname: $HOSTNAME" 正常运行时间
睡眠 $DELAY
fi
如果 [[ $REPLY == 2 ]]; 然后 df -h
睡眠 $DELAY
fi
如果 [[ $REPLY == 3 ]]; 然后
如果 [[ $(id -u) -eq 0 ]]; 然后
echo "家庭空间利用率(所有用户)" du -sh /home/*
其他
echo "家庭空间利用率 ($USER)" du -sh $HOME
fi
睡眠 $DELAY
fi
其他
echo "无效输入。"
睡眠 $DELAY
fi
完成
echo "程序终止。"
通过将菜单包含在 while 循环中,我们可以让程序在每次选择后重复菜单显示。 只要循环继续 回复 不等于“0”,菜单再次显示,让用户有机会再次选择。 在每个动作结束时, 睡觉 命令被执行,因此程序将暂停几秒钟,以便在清除屏幕和重新显示菜单之前看到选择的结果。 一次 回复 等于“0”,表示“退出”选择,
循环终止并继续执行以下行 完成.