前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Shell脚本编程_shell脚本编程100例pdf

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

作者头像
Java架构师必看
发布2022-11-14 18:07:54
2.1K0
发布2022-11-14 18:07:54
举报
文章被收录于专栏:Java架构师必看Java架构师必看

大家好,我是架构君,一个会写代码吟诗的架构师。今天说一说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架构师必看祝您升职加薪,年年好运。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-10-292,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 结构化命令(一)
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档