目录
一.for语句的结构
读取不同的变量值,用来逐个执行同一组命令![](https://img-blog.csdnimg.cn/direct/487df7f2abe042899e1275b732127b7e.png)
1 .for语句的结构
- 使用for循环语句时,需要指定一个变量及可能的取值列表,针对每一个不同的取值重复执行相同的命令序列,直到变量值用完退出循环。
- for 循环语句的语法结构如下
for 变量名 in 取值列表
do
命令序列
done
- 上述语句结构中,操作对象为用户指定名称的变量,并通过in关键字为该变量预先设置了一个取值列表,多个取值之间以空格进行分隔。位于 do 和done之间的命令序列称为“循环体”,其中的执行语句需要引用变量以完成相应的任务。
2 .for语句的执行流程
- 首先将列表中的第1个取值赋给变量,并执行 do···done循环体中的命令序列
- 然后将列表中的第2个取值赋给变量,并执行循环体中的命令序列……
- 以此类推,直到列表中的所有取值用完,最后将跳至 done 语句,表示结束循环
3.for循环练习题
二.while语句
while循环语句
for循环语句非常适合于列表对象无规律,且列表来源已固定(如某个列表文件)的场合。而对于要求控制循环次数、操作对象按数字顺序编号、按特定条件执行重复操作等情况,则更适合使用while语句。
1.while 语句的结构
- 使用 while 循环语句时,可以根据特定的条件反复执行一个命令序列,直到该条件不再满足时为止。但是在脚本应用中,应该避免出现死循环的情况,否则后边的命令操作将无法执行。
- 循环体内的命令序列中应包括修改测试条件的语句,以便在适当的时候使测试条件不再成立,从而结束循环。
while循环语句的语法结构如下所示:
while 条件测试操作
do
命令序列
done
2. while 语句的执行流程
- 首先判断 while 后的条件测试操作结果,如果条件成立,则执行 do···done 循环体中的命令序列
- 返回 while 后再次判断条件测试结果,如果条件仍然成立,则继续执行循环体
- 再次返回到 while 后,判断条件测试结果…如此循环
- 直到 while 后的条件测试结果不再成立为止,最后跳转到 done 语句,表示结束循环
-
3.while循环练习题
- 见:SHEll-while循环语句练习题-CSDN博客
三.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"前面的字符不会被覆盖 |
\\ | 表示插入""本身; |