Shell脚本编程_shell脚本编程100例pdf

2022-11-14 18:07:54 浏览数 (1)

大家好,我是架构君,一个会写代码吟诗的架构师。今天说一说Shell脚本编程_shell脚本编程100例pdf,希望能够帮助大家进步!!!

结构化命令(一)

if-then和case语句。

If-then-else语句

当if语句中的命令返回非零退出状态码时, bash shell会执行else部分中的命令。

嵌套if-then语句的问题在于代码不易阅读,很难理清逻辑流程。

可以使用else部分的另一种形式:elif。这样就不用再书写多个if-then语句了。 elif使

用另一个if-then语句延续else部分。

elif语句行提供了另一个要测试的命令,这类似于原始的if语句行。如果elif后命令的退出状态码是0,则bash会执行第二个then语句部分的命令。使用这种嵌套方法,代码更清晰,逻辑更易懂。

elif语句返回的是非零值的退出状态。这使得elif块中的else代码块得以执行。

可以继续将多个elif语句串起来,形成一个大的if-then-elif嵌套组合。

每块命令都会根据命令是否会返回退出状态码0来执行。记住, bash shell会依次执行if语句,只有第一个返回退出状态码0的语句中的then部分会被执行。

可以使用test命令确定变量中是否有内容。这只需要一个简单的条件表达式。

当test命令测试条件时,返回的退出状态为0。这使得then语句块中的语句得以执行。

方括号定义了测试条件。无需在if-then语句中声明test命令。注意,第一个方括号之后和第二个方括号之前必须加上一个空格,否则就会报错。

这个脚本中只用了大于号,没有出现错误,但结果是错的。脚本把大于号解释成了输出重定

向。因此,它创建了一个名为hockey的文件。由于重定向的顺利完成, test命令返回了退出状态码0, if语句便以为所有命令都成功结束了。

要解决这个问题,就需要正确转义大于号。

比较测试中,大写字母被认为是小于小写字母的。sory命令相反,使用的是系统的本地化语言设置中定义的排序顺序。小写字母出现在大写字母前。

复合条件测试

if-then语句允许你使用布尔逻辑来组合测试。有两种布尔运算符可用:

 condition1 && condition2 AND布尔运算符,要让then部分命令执行,两个条件都必须满足。

 condition1 || condition2 OR布尔运算符,任意条件为TRUE,then部分的命令就会执行。

双括号

expression可以是任意的数学赋值或比较表达式。除了test命令使用的标准数学运算符,

表12-4列出了双括号命令中会用到的其他运算符。

可以在if语句中用双括号命令,也可以在脚本中的普通命令里使用来赋值。

注意,不需要将双括号中表达式里的大于号转义。这是双括号命令提供的另一个高级特性。

双方括号:提供了针对字符串比较的高级特性。

双方括号里的expression使用了test命令中采用的标准字符串比较。但它提供了test命令未提供的另一个特性——模式匹配( pattern matching)。

if [ $USER == r* ]

双等号将右边的字符串( r*)视为一个模式,并应用模式匹配规则。双方括号命令USER环境变量进行匹配,看它是否以字母r开头。如果是的话,比较通过, shell会执行then部分的命令。

有了case命令,就不需要再写出所有的elif语句来不停地检查同一个变量的值了。 case命令会采用列表格式来检查单个变量的多个值。

今天文章到此就结束了,感谢您的阅读,Java架构师必看祝您升职加薪,年年好运。

0 人点赞