自动化运维[shell编程]——————for循环语句、while循环语句、until循环语句

文章目录

  • 1.for循环语句
    • 1.1 通过数字的方式
    • 1.2 通过seq命令
    • 1.3 for循环中的数值运算
    • 1.4 字符形式的循环
  • 2.while循环语句
  • 3.until循环语句

1.for循环语句

for循环的运作方式

  • 是将串行的元素意义取出,依序放入指定的变量
  • 然后重复执行含括的命令区域(在do和done 之间)
  • 直到所有元素取尽为止

串行是一些字符串的组合,彼此分隔符(如空格符)隔开,这些字符串称为字段。

for 变量 in 串行
do
   	执行命令
done

1.1 通过数字的方式

实例1:循环输出所跟数字。

for i in 1 4 5
do
	echo "$i"
done

在这里插入图片描述

自动化运维[shell编程]——————for循环语句、while循环语句、until循环语句_第1张图片

在这里插入图片描述

实例2:

for i in {
     1..10}
do
	echo "$i"
done

自动化运维[shell编程]——————for循环语句、while循环语句、until循环语句_第2张图片
自动化运维[shell编程]——————for循环语句、while循环语句、until循环语句_第3张图片
实例3:倒数输出

for i in {
     10..1}
do
	echo "$i"
done

在这里插入图片描述

自动化运维[shell编程]——————for循环语句、while循环语句、until循环语句_第4张图片

1.2 通过seq命令

seq 用于生成从一个数到另一个数之间的所有整数

用法:

seq [选项] .. 尾数
seq [选项] .. 首数 尾数
seq [选项] .. 首数 增量 尾数

选项:
-f:指定输出格式
-w:指定输出数字同宽,与-f部分作用相似,不可与-f选项同时使用
-s:指定分隔符,默认分隔符是/n(回车)

首先测试-f选项:

自动化运维[shell编程]——————for循环语句、while循环语句、until循环语句_第5张图片
测试-w选项:

在这里插入图片描述

测试-s选项:

自动化运维[shell编程]——————for循环语句、while循环语句、until循环语句_第6张图片
现在可以将seq使用在for循环中:

从一数到十

自动化运维[shell编程]——————for循环语句、while循环语句、until循环语句_第7张图片

自动化运维[shell编程]——————for循环语句、while循环语句、until循环语句_第8张图片
输出从1-10中的单数

自动化运维[shell编程]——————for循环语句、while循环语句、until循环语句_第9张图片
自动化运维[shell编程]——————for循环语句、while循环语句、until循环语句_第10张图片

输出从1-10中的双数

自动化运维[shell编程]——————for循环语句、while循环语句、until循环语句_第11张图片

在这里插入图片描述

注意seq不能倒数:

自动化运维[shell编程]——————for循环语句、while循环语句、until循环语句_第12张图片
在这里插入图片描述

1.3 for循环中的数值运算

我们可以在for循环中像c语言中一样进行计算循环:

for ((i=1;i<10;i++)) # 循环i-1次
do
	循环内容
done

自动化运维[shell编程]——————for循环语句、while循环语句、until循环语句_第13张图片

自动化运维[shell编程]——————for循环语句、while循环语句、until循环语句_第14张图片

1.4 字符形式的循环

可以将字符按照顺序执行:

for i in {
     a..e}
do
	执行内容
done

自动化运维[shell编程]——————for循环语句、while循环语句、until循环语句_第15张图片

在这里插入图片描述

2.while循环语句

while循环的语法:

while 条件测试
do
	执行命令
done

测试条件只要为真(True)就会一直循环执行命令:

在这里插入图片描述
自动化运维[shell编程]——————for循环语句、while循环语句、until循环语句_第16张图片
自动化运维[shell编程]——————for循环语句、while循环语句、until循环语句_第17张图片
我们更改脚本当用户输入exit的时候就停止循环退出:

这里可以在条件处使用test语句判断输入:

[ ! "$WORD" = "exit" ] # 当变量WORD的值不等于exit时为真,继续循环

自动化运维[shell编程]——————for循环语句、while循环语句、until循环语句_第18张图片

自动化运维[shell编程]——————for循环语句、while循环语句、until循环语句_第19张图片
或者是像for一样的数值循环,但是这种方式不如直接使用for:

计算从1加到10的值

#!/bin/bash
declare -i i=1 # 声明i和sum为整数型
declare -i sum=0 # 
while ((i<=10)) # 只要i值小于或者等于10,就执行循环
do
  let sum+=i # sum+=i和sum=sum+i是一样的,sum累加上i
  let i++ # i的值递增1,此行是改变条件测试的命令,一旦i大于10,可终止循环
done
echo $sum # 显示sum的值为55

用while写一个九九乘法表

#!/bin/bash
declare -i a=1 # 声明函数a、b、i为整数
declare -i b=1
declare -i i=0
while (( $a <= 9 )) # 设定被乘数最高为9
do
        while (($b <= $a)) # 设定乘数小于被称数
        do
                i=$a*$b # 计算结果值
                echo -en "$b * $a = $i   " # 输出乘法
                b=$b+1 # 乘数加1
        done
        echo -e "\n" # 换行
        a=$a+1 # 被乘数加一
        b=1 # 乘数重制为1
done

3.until循环语句

while循环的条件测试是测真值,until循环则是测假值:

until 条件测试
do
	执行命令
done

当测试条件为假(false)时一直循环,当为真(true)时退出循环

在这里插入图片描述
自动化运维[shell编程]——————for循环语句、while循环语句、until循环语句_第20张图片
自动化运维[shell编程]——————for循环语句、while循环语句、until循环语句_第21张图片

当条件成立停止循环

自动化运维[shell编程]——————for循环语句、while循环语句、until循环语句_第22张图片
自动化运维[shell编程]——————for循环语句、while循环语句、until循环语句_第23张图片

while 条件 条件成立继续循环
until 条件 条件成立停止循环

接下来使用until完成一个九九乘法表

#!/bin/bash
declare -i a=1 # 声明函数a、b、i为整数
declare -i b=1
declare -i i=0
until (( $a > 9 )) # 设定被乘数大于9时退出
do
        until (($b > $a)) # 设定乘数大于被乘数时退出
        do
                i=$a*$b # 计算结果值
                echo -en "$b * $a = $i   " # 输出乘法
                b=$b+1 # 乘数加一
        done
        echo -e "\n" # 换行
        a=$a+1 # 被乘数加1
        b=1 # 乘数重置为1
done

你可能感兴趣的:(shell,shell,linux,运维)