为什么要用循环结构
在shell运维中,很多时候我们都要重复的执行某个功能,而计算机比人的优势大的地方就在于适合执行确定的功能。利用计算机的强大计算能力完成自动化脚本工作。
比如我要新建一批用户cat1、cat2、...、cat100。密码是用户名加上后六位随机数。这个过程如果手动完成是非常耗时,要重复执行useradd添加用户并用passwd分配密码。但是使用循环脚本就非常方便了,如果将用户量增大到100台服务器,每台服务器分配1000个人用户,就可以显示出循环语句的威力。
for循环
for var in item1 item2 ... itemN
do
command1
command2
...
commandN
done
for i in 1 2 3 hello abc
do
echo $i
done
输出当前路径下所有文件名
for i in `ls`
do
echo $i
done
输出序列1-10
for i in $(seq 1 10)
do
echo $i
done
for i in {1..10}
do
echo $i
done
输出字母a-z
for i in {a..z}
do
echo $i
done
for ((…;…;…)) do…done
for ((i=1;i<=10;i+=2))
do
echo $i
done
while循环
while 循环用于不断执行一系列命令,也用于从输入文件中读取数据。
while condition
do
command
done
偶数和
sum=0
i=0
while [ $i -le 50 ]
do
let sum+=i
let i+=2
done
echo "0-50的偶数和为:$sum"
循环输入名字,文件结束符为Ctrl+d,输入文件结束符后read指令返回false。
while read -p "Please input your name: " name
do
echo $name
done
until 循环
until 循环执行一系列命令直至条件为 true 时停止。
until 循环与 while 循环在处理方式上刚好相反。
一般 while 循环优于 until 循环,但在某些时候—也只是极少数情况下,until 循环更加有用。
until 语法格式:
until condition
do
command
done
condition 一般为条件表达式,如果返回值为 false,则继续执行循环体内的语句,否则跳出循环。
以下实例我们使用 until 命令来输出 0 ~ 9 的数字:
a=0
until [ ! $a -lt 10 ]
do
echo $a
a=`expr $a + 1`
done
跳出循环
在循环过程中,有时候需要在未达到循环结束条件时强制跳出循环,Shell 使用两个命令来实现该功能:break 和 continue。
break 命令
break 命令允许跳出所有循环(终止执行后面的所有循环)。
下面的例子中,脚本进入死循环直至用户输入数字大于5。要跳出这个循环,返回到shell提示符下,需要使用break命令。
while true
do
read -p "请输入1-5虹之间的数字:" n
case $n in
1|2|3|4|5) echo "你输入的数字为$n"
;;
*) echo "请输入正确的数字范围"
break
;;
esac
done
continue
continue 命令与 break 命令类似,只有一点差别,它不会跳出所有循环,仅仅跳出当前循环。
对上面的例子进行修改:
while true
do
read -p "请输入1-5之间的数字:" n
case $n in
1|2|3|4|5) echo "你输入的数字为$n"
;;
*) echo "请输入正确的数字范围"
continue
echo "游戏结束,这句话永远不会被执行"
;;
esac
done
视频讲解
视频加载中...
相关推荐
- 什么是Linux系统?我们是否要用Linux
- 学习Linux命令行,用手就行!
- Linux革命性工具,shell脚本自动化
- Linux革命性工具,shell脚本选择结构让程序更加智能
- 什么是C++变量,就是存储数据的盒子
- C++输入输出流,输出是调试程序最重要的方法