shell流控制语句总结

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命令类似,只有一点差别,它不会跳出所有循环,仅仅跳出当前循环。
和其他语言一样,不再赘述

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 4,509评论 0 5
  • Swift 提供了类似 C 语言的流程控制结构,包括可以多次执行任务的for和while循环,基于特定条件选择执行...
    穷人家的孩纸阅读 726评论 1 1
  • Swift提供了多种控制流声明。包括while循环来多次执行一个任务;if,guard和switch声明来根据确定...
    BoomLee阅读 2,008评论 0 3
  • [The Swift Programming Language 中文版]本页包含内容: Swift提供了多种流程控...
    风林山火阅读 605评论 0 0
  • 2015年9月,我服从学校的工作安排,担任151班的班主任职务。在学生上学期间,我从早上督促学生起床起,到晚上检...
    夏季的热情阅读 500评论 8 14