shell流控制语句实战:https://www.jianshu.com/p/ee0c5567d491
shell流程控制语句语法梳理:
1 分支语句:if、case
2 循环语句:for、while、until,一般配合if、break、continue使用
1.分支语句
(1)单分支if语句
格式:
if [ 条件判断式 ]; then
代码块
fi
(2)双分支if语句
格式:
if [ 条件判断式 ]; then
条件成立时,执行的程序
else
条件不成立时,执行的程序
fi
(3)多分支if语句
if [ 条件判断式1 ]; then
执行程序1
elif [ 条件判断式2 ]; then
执行程序2
.....省略更多条件.....
else
最后执行此程序、
fi
几个常用的表达式:
-f filename:普通文件文件存在则为真
-d filename :目录文件存在为真
-z string:长度为0则为真
-a string:长度不为0则为真
-s filename:文件长度不为0
if应用举例:
[avatar@xxx pay]$ vi checkln.sh
1 #!/bin/bash
2 #检查当前目录下是否有清缓存脚本软链接,没有则创建
3 file="./cleancache.php"
4 if [ ! -f $file ];then
5 ln -s /home/avatar/system/libs/framework/baseclient/cleancache.php cleancache.php
6 echo "cleancache 软链接创建成功!"
7 else
8 echo "当前目录下已存在cleancache软链接"
9 fi
[avatar@xxx pay]$ sh checkln.sh
cleancache 软链接创建成功!
[avatar@xxx pay]$ sh checkln.sh
当前目录下已存在cleancache软链接
(4)case语句
case $变量名 in
"值1")
如果变量的值等于值1,则执行程序1
;;
"值2")
如果变量的值等于值2,则执行程序2
;;
.....
*)
如果变量的值都不是以上的值,则执行此程序
;;
esac
Eg:测试环境配置微信时需要将openId、appId、appSecret、mich_id等替换为线下选用的测试公众号的值,此时可以用case,然后将这一组键值对定义在代码块里进行替换操作,这样配置时需要做的只是选择公众号了
2.循环语句
(1)for循环
for循环格式1:遍历
for 变量 in 列表
do
command
done
for循环格式2:
for ((i=val1;i<val2;i++/--))
do
Command。。。
done
(2)while循环
语法格式:
while command
do
Command。。。
done
until循环
until 循环执行一系列命令直至条件为 true 时停止。until 循环与 while 循环在处理方式上刚好相反
until 循环格式为:
until command
do
Statement(s) to be executed until command is true
done
示例:
$ cat until01.sh
#!/bin/sh
i=0
until [ $i -gt 5 ]
do
let "i++"
echo "this is $i"
done
break和continue命令
1.break命令
break命令允许跳出所有循环(终止执行后面的所有循环)
2.continue命令
continue命令与break命令类似,只有一点差别,它不会跳出所有循环,仅仅跳出当前循环。
和其他语言一样,不再赘述
网友评论