持续更新中Linux命令行与Shell脚本编程大全(第3版)读书笔记12-20章
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了持续更新中Linux命令行与Shell脚本编程大全(第3版)读书笔记12-20章相关的知识,希望对你有一定的参考价值。
《Linux命令行与Shell脚本编程大全(第3版)》读书笔记
第十二章 使用结构化命令
根据条件使脚本跳过某些命令,这样的命令称为结构化命令(structured command)。结构化命令允许改变程序执行的顺序。
If-then语句:
If command
Then
Commands
Fi
如果if后的command执行退出码是0(也就是执行成功了),then后面的语句就会被执行。
也可以写成:
If command; then
Commands
Fi
注意了,if后的command结果是会被输出的。(执行脚本后)
If-then-else语句:
If command
Then
Commands
Else
Commands
Fi
If-then-elif-then-else
If command1
Then
Commands
Elif command2
Then
Commands
Else
Commands
Fi
多个elif嵌套:
If command1
Then
Command set 1
Elif command2
Then
Command set 2
Elif command3
Then
Command set 3
Elif command4
Then
Command set 4
Fi
test语句也是用于判断的,语法如下:
Test condition
和if一起配合使用:
If test condition
Then
Commands
Fi
If test $var,这表示测试var是否空值,如果空值,表示假,不执行then后面的语句,如果非空值,表示真,执行then后面的语句。
也可以使用if [ condition ]方法代替。
test命令可以判断三类条件:
数值比较、字符串比较、文件比较。
数值比较:
-eq,等于。
-ge,大于或者等于。
-gt,大于。
-le,小于或者等于。
-lt,小于。
-ne,不等于。
注意,数值比较只能是整数。
字符串比较:
=,相同
!=,不相同
<,小于
>,大于
-n str,str长度非0
-z str,str长度为0或者没定义。
注意>和<使用时,需要转义,不然成了重定向符号。字符串比较中,大写是小于小写的。
文件比较:
-d file,是否存在并且是个目录
-e file,是否存在
-f file,是否存在并是个文件
-r file,是否可读
-s file,存在并且非空
-w file,存在并且可写
-x file,存在并且可执行
-O file,是否存在并且属于当前用户所有
-G file,是否存在并且默认组与当前用户相同
File1 -nt file2,file1是否比file2新,针对编写软件安装很有效。比较的是创建日期。比如系统上不愿意安装一个比现在还旧的文件。
File1 -ot file2,file1是否比file2旧,针对编写软件安装很有效。比较的是创建日期。
复合条件测试:
[ condition 1 ] && [ condition2 ],两个条件都满足,才执行then。
[ condition 1 ] || [ condition2 ],一个条件满足,就执行then。
If-then语句使用高级功能:
用于数学表达式的双括号、用于高级字符串处理功能的双方括号。
双括号允许使用更多的数学符号:
Val++,后增
Val--,后减
++val,先增
--val,先减
!,逻辑求反
~,位求反
**,幂运算
<<,左位移
>>,右位移
&,位布尔和
|,位布尔或
&&,逻辑和
||,逻辑或
双括号可以用于任意的数学赋值或者比较表达式。test一般是用标准的数学运算符。
比如:
#!/bin/bash
Val1=10
If (( $val1 ** 2 > 90 ))
Then
(( var2 = $var1 ** 2 ))
Fi
可以看到,这里的大于号,不需要转义,这是双括号的特性。
双方括号针对了字符串比较的高级特性。语法如下:
[[ expression ]]
可以使用匹配模式。比如:
#!/bin/bash
If [[ $USER = r* ]]
Then
Echo "Hello $USER"
Fi
case语句适合多个elif的这种语句模式,语法如下:
Case var in
Pattern 1 | pattern 2) commands1;;
Pattern3) commands2;;
*) default commands;;
Esac
本文出自 “Alex的博客” 博客,请务必保留此出处http://houjun19830610.blog.51cto.com/9269760/1872399
以上是关于持续更新中Linux命令行与Shell脚本编程大全(第3版)读书笔记12-20章的主要内容,如果未能解决你的问题,请参考以下文章
《Linux命令行与shell脚本编程大全》第九章 安装软件程序
linux命令行与shell脚本编程大全---bash shell命令
《Linux命令行与Shell脚本编程大全第2版.布卢姆》pdf
Linux 命令行与 shell 脚本编程大全 1.初识Linux shell#yyds干货盘点#