这是我参与更文挑战的第8天,活动详情查看:更文挑战
Shell编程快速入门,这章是Shell语法中的循环结构。
shell中循环结构分为三种:
- for 循环
- while循环
- until 循环
for 语句
#!/bin/sh
for 变量名 in 列表
do
......
done
- 变量是在当前循环中使用的一个对象,用来接收变量列表中的元素
- 变量列表是整个循环要操作的对象的集合,可以是字符串集合或文件名、参数等等,变量列表的值会被逐个赋给变量。
例子
#!/bin/sh
for month in jan feb mar apr may jun
do
echo -e "$month\t\c"
done
echo
exit 0
数字循环
seq 1 10 1到10
#!/bin/bash
#也是产生等差数列-->默认是1
for i in `seq 1 10` #产生的是一个字符串,默认IFS是以空格隔开!
do
echo $(expr $i \* 3 + 1); #主要是复习:expr乘法的特殊用法!-->空格隔开
done
{1..10}
for in {1..10} # 1到10
while 循环
while [ 表达式 ]
do
…
done
在while循环中,当表达式的值为假时,停止循环,否则循环将一直进行。
#!/bin/sh
count=1
sum=0
while [ $count -le 100 ] # count <= 100
do
sum=`expr $sum + $count` # expr 运算
count=`expr $count + 1` # 运算符左右需要有空格
done
echo "sum=$sum"
exit 0
[root@localhost sh]$ sh while.sh
sum=5050
until 循环
until [ 表达式 ]
do
…
done
until循环的条件为假时,才能继续执行循环中的命令
#!/bin/sh
i=1
until [ $i -gt 3 ] # i>3 为假时执行
do
echo "the number is $i"
i=`expr $i + 1`
done
exit 0
[root@localhost sh]# sh until.sh
the number is 1
the number is 2
the number is 3
跳出循环
在循环过程中,有时候需要强制跳出循环,Shell使用两个命令来实现该功能:break和continue。
break 命令
break 命令用于强制跳出循环体
#!/bin/bash
while :
do
echo -n "输入 1 到 5 之间的数字:"
read aNum
case $aNum in
1|2|3|4|5) echo "你输入的数字为 $aNum!"
;;
*) echo "你输入的数字不是 1 到 5 之间的! 游戏结束"
break
;;
esac
done
程序会不断运行等待用户输入,直到用户输入1-5之外的数字 执行break命令跳出循环
continue 命令
此程序会输出1-10内的奇数,判断如果是偶数就continue结束本次循环 ,所以不会执行后面的语句
#!/bin/bash
i=0
for i in `seq 1 10`
do
if [ `expr $i % 2` -eq 0 ]
then
continue
fi
echo $i
done
```