一、条件语句
1.1 test
test 测试文件的表达式 是否成立
格式1 test 条件表达式
格式2 [ 条件表达式 ]
[ 操作符 文件或目录 ]
可以用$?来进行测试
$?:表示前一条命令执行后的返回状态,返回值为 0 表示执行正确,返回任何非 0值均表示执行出现异常
操作符:
-d:测试是否为目录(Directory)
-e:测试目录或文件是否存在(Exist)
-a:测试目录或文件是否存在(Exist)
-f:测试是否为文件(File)
-r:测试当前用户是否有权限读取(Read)
-w:测试当前用户是否有权限写入(Write)
-x:测试当前用户是否有权限执行(eXcute)
-L: 测试是否为软连接文件
方法一:
方法二:
还可以用判断运算符
1.2 比较整数数值
[ 整数1 -操作符 整数2 ] 公式
-
-eq:第一个数等于(Equal)第二个数
-
-ne:第一个数不等于(Not Equal)第二个数
-
-gt:第一个数大于(Greater Than)第二个数
-
-lt:第一个数小于(Lesser Than)第二个数
-
-le:第一个数小于或等于(Lesser or Equal)第二个数
-
-ge:第一个数大于或等于(Greater or Equal)第二个数
1.3 字符串比较
常用的测试操作符
-
=:字符串内容相同
-
!=:字符串内容不同,! 号表示相反的意思
-
-z:字符串内容为空
-
-n: 字符是否存在
1.4 逻辑测试
格式:
格式1:[ 表达式1 ] 操作符 [ 表达式2 ] ...
格式2:命令1 操作符 命令2 ...
&&
&& #且
两个表达式都为真菜为真
cmd1 && cmd2
||
|| #或
任意一个为真即为真
如果第一个为真,就不会执行第二个
第一个为假 ,才会执行第二个
cmd1 || cmd2
常见条件
-
-a或&&:逻辑与,“而且”的意思全真才为真
-
-o或||:逻辑或,“或者”的意思一真即为真
-
!:逻辑否
1.5 条件测试
在Shell编程中,双中括号 [[ ... ]] 是一种用于条件测试和逻辑表达式的结构。它通常用于if语句和循环中。
双中括号和单中括号 [ ... ] (测试命令)在某些方面有所不同:
逻辑运算符: 双中括号支持更多的逻辑运算符和表达式,比如&&、||、<、>等,而单中括号需要使用-a和-o来表示逻辑与和逻辑或。
字符串比较: 双中括号允许更灵活的字符串比较操作,如==、!=、<、>等直接用于字符串的比较。
变量处理: 在双中括号内,可以不使用变量引用的特殊转义字符。
1.6() {}
(CMD1;CMD2;...)和 { CMD1;CMD2;...; } 都可以将多个命令组合在一起,批量执行
()
- 圆括号:
- 用于创建子shell,其中的命令会在一个子进程中执行。这意味着在括号内部声明的变量和环境与外部的Shell环境是隔离的。
- 可以用来创建子进程,使得其中的命令可以在一个独立的执行环境中运行。
{}
- 花括号:
- 在Shell脚本中用来表示命令块,比如用于定义函数或者在一行中执行多个命令。
- 用于在一行中分隔命令或者定义代码块。
这些括号在Shell中有不同的用途,使用时要根据需要选择合适的括号类型。