Shell编程快速入门(三)-循环结构

252 阅读1分钟

这是我参与更文挑战的第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 [ 表达式 ]
dodone

在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 [ 表达式 ]
dodone

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
```