大家好呀,前面我们介绍了Shell 脚本中的打印,变量定义,变量使用和变量的高级用法等内容。
根据学习一门编程语言的惯例,今天的话呢,就开始学习Shell脚本中的流程控制相关的内容了,今天先初步讲解下Shell 中的流程控制相关语法和简单使用,下期讲解高级用法。
如果你想回顾前面几期的内容,直接点击下面链接跳转哟:
Shell脚本怎么写?(1-2)——Shell 变量的高级用法
好的,我们废话不多说,就开始了。
说到流程控制,无外乎就是分支判断和循环的逻辑,那么在Shell 脚本中,是如何实现分支判断和循环的呢?
我们先说一下分支判断,具体还是直接展示代码示例:
如上图,就是在Shell脚本中一个最简单的分支判断逻辑。
拆解一下,Shell脚本中简单分支判断的语法逻辑如下:
if condition
then
command1
command2
...
commandN
else
command
fi
差不多如上所示,通过 if,then, else , fi 关键字完成分支判断的逻辑。(注意点:1. Shell脚本的判断条件写法,使用方括号时,方括号和条件之间的空格不能省略,必须形如
[ a== b ], 方括号 和a 之间必须存在空格,这是语法规定)。
上面的代码示例运行结果如下所示:
接下来,我们来学习下复杂的多分支判断逻辑的语法。
还是先看示例:
如上图是Shell 脚本的多分支判断语句,形如:
if condition1
then
command1
elif condition2
then
command2
else
commandN
fi
与简单分支语句的形式差不多,注意 condition 使用方括号时,空格必须存在,其次,每个分支必须使用then 关键字。
上面脚本的运行结果,很明显会是second_num 大于 first_num,这里就不再贴运行结果了。
其中,使用方括号判断条件, -gt 是大于, -lt 是小于等,后面一个文章的高级语法使用时,会重点进行讲解,包括使用小括号等其它方式进行分支判断的方法。本期先简单介绍语法规则和简单使用。
好了,看到这里,我们if else 系列的分支控制语句就学习的差不多了,接下来我们来看一下Shell 版本的switch case 语句的使用,这也算是一种分支控制语法。
具体示例如下图所示:
如上图所示:
使用代码形式如:
case 值 in
模式1)
command1
command2
...
commandN
;;
模式2)
command1
command2
...
commandN
;;
esac
其中read 是阻塞,等待读取一个用户输入的值,然后根据不同的输入,进行分支控制,Shell脚本中的case 控制语句,不需要使用break, 是默认匹配后,默认break 掉的。
上面脚本的运行结果如下图所示:
我运行了四次脚本,依次输入1, 2, 3, 4, 结果与预期相同。
值得注意的一点是,Shell脚本的case 语句分支控制,不止可以对比整数,也可以对比字符串(其实这个也很好理解,Shell脚本第一期就讲过,是默认字符串类型的脚本语言)。
具体示例如下:
然后运行结果也是显而易见的,它会匹配第一个分支,输出 my name is chen xiang 。
好的,今天的话呢,我们主要给大家介绍了几种常用的Shell 脚本中的分支控制模式,包括简单的if else, if elif elif else, 和 case 语法。
下一期的话呢,我继续给大家介绍Shell 脚本中的循环控制语法。然后就是各种分支判断和循环判断的高级用法相关内容。
如果您觉得文章还不错的话,希望您能关注我,并给我留言您想学习的内容,任何您想学习的,我都可以以文章的方式给大家分享。