SHELL编程之循环语句

目录

一.for语句的结构

读取不同的变量值,用来逐个执行同一组命令​编辑

1 .for语句的结构

2 .for语句的执行流程

3.for循环练习题

二.while语句

while循环语句

1.while 语句的结构

2. while 语句的执行流程

         3.while循环练习题

三.until循环


一.for语句的结构


读取不同的变量值,用来逐个执行同一组命令

1 .for语句的结构

  • 使用for循环语句时,需要指定一个变量及可能的取值列表,针对每一个不同的取值重复执行相同的命令序列,直到变量值用完退出循环。
  • for 循环语句的语法结构如下
for 变量名 in 取值列表
do
	命令序列
done
  • 上述语句结构中,操作对象为用户指定名称的变量,并通过in关键字为该变量预先设置了一个取值列表,多个取值之间以空格进行分隔。位于 do 和done之间的命令序列称为“循环体”,其中的执行语句需要引用变量以完成相应的任务。

2 .for语句的执行流程

  • 首先将列表中的第1个取值赋给变量,并执行 do···done循环体中的命令序列
  • 然后将列表中的第2个取值赋给变量,并执行循环体中的命令序列……
  • 以此类推,直到列表中的所有取值用完,最后将跳至 done 语句,表示结束循环

3.for循环练习题

见:shell-for循环语句练习题-CSDN博客

二.while语句

while循环语句

for循环语句非常适合于列表对象无规律,且列表来源已固定(如某个列表文件)的场合。而对于要求控制循环次数、操作对象按数字顺序编号、按特定条件执行重复操作等情况,则更适合使用while语句。

1.while 语句的结构

  • 使用 while 循环语句时,可以根据特定的条件反复执行一个命令序列,直到该条件不再满足时为止。但是在脚本应用中,应该避免出现死循环的情况,否则后边的命令操作将无法执行。
  • 循环体内的命令序列中应包括修改测试条件的语句,以便在适当的时候使测试条件不再成立,从而结束循环。

while循环语句的语法结构如下所示:

while 条件测试操作
do
	命令序列
done

2. while 语句的执行流程

  • 首先判断 while 后的条件测试操作结果,如果条件成立,则执行 do···done 循环体中的命令序列
  • 返回 while 后再次判断条件测试结果,如果条件仍然成立,则继续执行循环体
  • 再次返回到 while 后,判断条件测试结果…如此循环
  • 直到 while 后的条件测试结果不再成立为止,最后跳转到 done 语句,表示结束循环

三.until循环

until循环与for,while循环不同的是,until循环是只要条件不符合就会一直循环,直到条件符合后才会退出循环

until 条件测试操作  

do    

命令序列  

done

运用演示:打印数字1-10 

#!/bin/bsah
i=1
until [ $i -gt 10 ]
do
  echo $i
  i=$((i+1))
done
###########
#!/bin/bash:这是一个shebang,它告诉系统这个脚本应该使用哪个解释器来执行。在这个例子中,我们使用的是bash shell。

i=1:这行代码定义了一个变量i并将其初始化为1。

until [ $i -gt 10 ]:这是until循环的开始。[ $i -gt 10 ]是条件表达式,当$i大于10时,表达式的结果为假,循环结束。

do:这是do关键字,表示until循环的主体部分的开始。

echo $i:这行代码打印出变量i的值。

i=$((i+1)):这行代码将i的值加1。注意这里使用了双括号$((...))来进行算术运算。

done:这是done关键字,表示until循环的主体部分的结束。

四.echo的用法

echo [选项] [字符串]

  • 在将参数传递给echo命令之前,shell会替换所有变量、通配符匹配和特殊字符。
  • 使用双引号或单引号包围echo命令的参数是一种好的编程实践,尤其是当需要保留字面值或防止变量展开时。
  • 当使用单引号时,会保留引号内的每个字符的字面值,变量和命令不会被展开。

 配合一些普通字符实现一些特殊的效果 

转义字符的类型:

\b转义后相当于退格键(backspace)但前提是"\b"后面存在字符; “\b"表示删除前一一个字符,"\b\b" 表示删除前两个字符。
\c不换行输出,在"\c"后面不存在字符的情况下,作用相当于echo -n;但是当"\c"后面仍然存在字符时,"\c"后面的字符将不会被输出。
\n换行,被输出的字符从"\n"处开始另起一行。
\f换行,但是换行后的新行的开头位置连接着上一行的行尾;
\v与\f相同;
\t转以后表示插入tab,即横向制表符;
\r光标移至行首,但不换行,相当于使用"\r"以后的字符覆盖"\r"之前同等长度的字符:但是当"\r"后面不存在任何字符时,"\r"前面的字符不会被覆盖
\\表示插入""本身;

五.双重循环

见:SHELL-双重循环习题练习-CSDN博客

  • 30
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

煤五千

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值