学习目标:
expr命令
while循环语句
until循环语句
break、continue和here
函数
source
学习内容:
expr命令
格式:expr expression(命令读入expression参数,计算它的值,然后将结果写入标准输出)
参数应用规则:
1、 用空格隔开每个项
2、 用\(反斜杠)放在shell特定的字符前面
对包含空格和其他特殊字符的字符串要用引号括起来
3、 计算字符长度
4、 增量计数
说明:expr在循环中用于增量计算。先将变量初始化为0,然后循环值加1,反引号用法是命令替代
(累加)
while循环语句
while<判别令>
do<命令清单>
done
当<判别令>返回0时(对于test命令,就是其后的表达式成立),则执行do后的命令清单,然后再重做循环;否则退出循环
while控制常与shift命令结合使用
练习1:编写一个shell脚本exist,用于判别其后用参数方式指定的一系列文件是否存在
注:(shift命令用于对参数的移动(左移),通常用于在不知道传入参数个数的情况下依次遍历每个参数然后进行相应处理(常见于Linux中各种程序的启动脚本) )
(此处参数只有一个$1,循环一次后,参数左移,相当于删去,此时循环里无参数,所以退出循环)
练习2:使用while语句创建一个计算1到5的平方的shell
使用while语句创建一个输入exit退出的shell程序
3、until循环语句
until控制流与while控制流用法类似,但作用相反。
格式
until<判别令>
do<命令清单>
done
当<判别令>返回非0值时,执行do后的命令清单,然后检查循环条件;当<判别令>返回0值时,退出循环。
3、 break、continue
1、break和continue
有时需要基于某些准则退出循环或跳过循环shell提供了两个命令实现功能
break和continue的区别:
break是跳出整个循环;continue是跳出本次循环
4、here
在shell中还可以利用所谓的“here文本”功能,即可在脚本文件中嵌入一段文档,作为脚本中所使用的命令的标准输入。
<命令><<!
<作为文本内容>
!
其中“!”符号也可以使用“EOF”、“END”等替换
使用here文本,可以方便的将一些需要进行用户交互的命令放入shell脚本中
(输入姓名,输出号码)
函数
所有函数在使用前必须定义。这意味着必须将函数定义在脚本开始的部分,直到shell解释器首次发现它时,才可以使用
向函数传递参数和向普通脚本传递参数是一样的,也是用$1,$2,$3
(调用函数)
从函数中返回
当调用玩函数,那么注程序可能需要得到函数的含税值,在函数中得到函数的返回值可以使用以下方法
1、 在函数末尾加return,从函数中返回,用最后的命令状态决定返回值
2、 返回数值,如0或1 格式:return 0或return 1
获取函数的返回值 用户可以直接在程序调用完函数的时候获取他的返回值
Source
Source在Linux中也被称为点命令,也就是一个符号(.)
使用source执行脚本时,脚本会在父进程中执行,各种操作都会在原本的bash内生效
Source命令通常用于重新执行刚刚修改过初始化文件,使之立即生效,而不必注销并重新登录
用法:source文件名\ 文件名