1. 循环控制:for、while、until等结构
1、for语句循环
for <循环变量> [in <循环变量取值集>]
do <命令清单>
done
- 如果for语句的后半部分被省略,则默认的<循环变量取值集>就是命令行参数集
如果命令清单有多条命令,系统会依次执行
2、while循环语句
while<判别令>
do<命令清单>
done
- 当<判别令>返回0时(对于test命令,就是其后的表达式成立),则执行do后命令清单,然后在重做循环;否则退出循环
while控制常与shift命令结合使用 - 练习1:编写一个shell脚本exist,用于判别其后用参数方式指定的一系列文件是否存在
代码如下:
#!/bin/bash
#filename:exist
while test -n "$1"
do
if test -e $1
then echo $1 is exist
else echo "$1 is not exist"
fi
shift
done
运行截图:
- 练习2:使用while语句创建一个计算1到5的平方的shell
代码如下:
#!/bin/bash
loopcont=1
result=0
while test $loopcont -le 5 #或 while [ $loopcont -le 5 ]
do
result=`expr $loopcont \* $loopcont`
echo "$loopcont square is $result"
loopcont=`expr $loopcont + 1`
done
运行截图:
使用while语句创建一个输入exit退出的shell程序
3、until循环语句
until控制流与while控制流用法类似,但作用相反。
until<判别令>
do<命令清单>
done
当<判别令>返回非0值时,执行do后的命令清单,然后检查循环条件;当<判别令>返回0233值时3,退出循环。
2. break、continue和here
1、break和continue
- 有时需要基于某些准则退出循环或跳过循环shell提供了两个命令实现功能
- break和continue的区别:
break是跳出整个循环;continue是跳出本次循环
2、here
- 在shell中还可以利用所谓的“here文本”功能,即可在脚本文件中嵌入一段文档,作为脚本中所使用的命令的标准输入。
<命令><<!
<作为文本内容>
!
- 其中“!”符号也可以使用“EOF”、“END”等替换
使用here文本,可以方便的将一些需要进行用户交互的命令放入shell脚本中
3. 函数
- 所有函数在使用前必须定义。这意味着必须将函数定义在脚本开始的部分,直到shell解释器首次发现它时,才可以使用
- 向函数传递参数
向函数传递参数和向普通脚本传递参数是一样的,也是用$1,$2,$3… - 从函数中返回
当调用完函数,那么主程序可能需要得到函数的返回值。在函数中得到函数返回值可以使用以下方法:
1、在函数末尾加return,从函数中返回,最后的命令状态决定返回值
2、返回数值,如0或1
格式:return 0或者return 1 - 获取函数返回值
用户可以直接在程序调用完函数的时候获取它的返回值
4. source - source在Linux中也被称为点命令,也就是一个符号(.)
使用source执行脚本时,脚本会在父进程中执行,各种操作都会在原本的bash内生效 - source命令通常用于重新执行刚刚修改过初始化文件,使之立即生效,而不必注销并重新登录
- 用法:source 文件名\ .文件名