目录

1.for循环

1.1 for循环取值列表的多种表达方式

1.2 for循环嵌套

2.while循环

3.until循环

4.break、continue、exit

4.1 break

4.2 continue

4.3 exit

1.for循环

for循环格式

for var in item1 item2 ... itemN            var为控制循环次数的变量,in后面的则是取值列表
do
    command                                 command满足取值列表则执行的命令 
done

当变量值在列表里,for 循环即执行一次所有命令,使用变量名获取列表中的当前取值。命令可为任何有效的 shell 命令和语句。in 列表可以包含替换、字符串和文件名。

in列表是可选的,如果不用它,for循环使用命令行的位置参数

例如

for i in 1 2 3 4 5
do
    echo "$i"
done
输出结果:

1
2
3
4
5

1.1 for循环取值列表的多种表达方式

除了上面的写法,for循环的取值列表还有其他的写法

1.

for i in {1..10}
do

  command

done

表示从1开始循环十次

2.

for i in {1..10..2}
do

  command

done

表示从1开始,每次循环结束,i自加2,到10结束整个循环

3.

for ((i=1;i<=10;i++))
do

  command

done

表示从1开始,循环十次

1.2 for循环嵌套

for循环的嵌套适用于较为复杂的环境比如有规律的图形化输出

1.打印九九乘法表

#!/bin/bash
for ((i=1;i<=9;i++))
#外循环控制行数
do
   for ((j=1;j<=$i;j++))
   #内循环控制列数
     do
         echo -n -e "$j*$i=$((i*j)) \t"
         #打印九九乘法不换行且输出之间跟制表符
     done
echo 
#换行
done

输出结果

shell循环mysql查询结果 shell 循环列表_bash

 2.打印矩形

#!/bin/bash
for ((i=1;i<=10;i++))   
#外循环控制行数
do
  for ((j=1;j<=20;j++))  
  #内循环控制列数
    do
        echo -n "*"     
        #不换行输出符号“*”
    done
echo
#换行  
done

输出结果:

shell循环mysql查询结果 shell 循环列表_取值_02

2.while循环

需要满足某种条件时可以使用,不知道循环次数时使用死循环可以配合退出语句实现循环操作

while循环格式

while [  条件判断  ]
do
	command
done

例题:

1.输出1到100的和

#!/bin/bash
sum=0
#设置和变量
i=0
#设置计数器
while [ $i -le 100 ]
#当计数器小于100时满足条件
do
  sum=$[i+sum]
  #加运算
  let i++
  #计数器自加,while迭代
done
echo "$sum"
#输出结果

运行结果

shell循环mysql查询结果 shell 循环列表_linux_03

包含if判断的while程序

2.判断用户是否存在

#!/bin/bash
cat /root/users.txt|while read line
#将users.txt作为循环条件输出到while循环
do
  cat /etc/passwd |grep $i
  #提取passwd文件,查看用户是否存在
  if  [ $? == 0 ];then
  #判断上条命令结果是否为真
    echo "用户已存在"
    #如果为真,输出上面内容
  else
  #如果为假,输入下面内容
    read -p "请输入密码" p
    useradd $i
    echo $p  |passwd --stdin  $i &>/dev/null
  fi
done

3.until循环

until循环和while循环结构相似,但是判断的机制相反,until是不满足条件的时候一直循环使用

代码格式

until [ 条件判断 ]
do

   command

done

例题

计算1到100的和

#!/bin/bash
sum=0
#和变量
i=0
#计数器
until [ $i -gt 100 ]
#当i不满足大于100时执行循环
do
  sum=$[i+sum]
  #和运算
  let i++
  #计数器自加,until迭代
done
echo "$sum"
#输出结果

结果

shell循环mysql查询结果 shell 循环列表_bash_04

until相较于for和while来说,使用的频率较少

4.break、continue、exit

4.1 break

break:跳出单层循环,break 2 跳出2层循环,循环内break后面的语句不会执行,但是循环外的语句仍然会执行

4.2 continue

continue:终止某个循环体中的某次循环的执行,但不会完全终止整个循环 ,while until 循环中使用需要慎重!因为如果continue放在变量迭代语句前面会造成死循环

4.3 exit

exit:退出shell脚本进程,exit执行后,脚本后面所有的语句都不会执行

例题

#!/bin/bash
i=0
while [ $i -le 2 ]
#当i小于等于2时执行
do
  read -p "请输入密码" pas
  #键盘输入
  if [ $pas != "123456" ];then
  #条件判断密码对不对
    echo "密码不正确"
    #不对,输出上面信息
    continue
    #结束本轮循环
  elif [ $pas == "123456" ];then 
  #判断密码是否等于123456
    echo "密码正确"
    #对输出密码正确
    break
    #跳出循环
  let i++
  #计数器自加,循环迭代
  fi
done

if [ $i == "3" ];then
#计数器判断,等于3就报警
  echo "报警"
fi