shell if的多条件的流程控制

时间:2022-02-25 05:37:48
h=$(date +%H)
s=$(date +%S)
m=$(date +%M)

if [[ $h == 11 && $m == 41 && $s == 10 ]]


一.   bash [  ] 单双括号
基本要素:
Ø   [ ] 两个符号左右都要有空格分隔
Ø   内部操作符与操作变量之间要有空格:如  [  “a”  =  “b”  ]
Ø   字符串比较中,> < 需要写成\> \< 进行转义
Ø   [ ] 中字符串或者${}变量尽量使用"" 双引号扩住,避免值未定义引用而出错的好办法
Ø   [ ] 中可以使用 –a –o 进行逻辑运算
Ø   [ ] 是bash 内置命令:[ is a shell builtin
1.测试时逻辑操作符
 
- a
逻辑与,操作符两边均为真,结果为真,否则为假。
- o
逻辑或,操作符两边一边为真,结果为真,否则为假。
!
逻辑否,条件为假,结果为真。
 
举例: [ -w result.txt- a  -w score.txt ] ;echo $? // 测试两个文件是否均可写
 
二.   bash  [[  ]] 双方括号
 
基本要素:
Ø   [[ ]] 两个符号左右都要有空格分隔
Ø   内部操作符与操作变量之间要有空格:如  [[  “a” =  “b”  ]]
Ø   字符串比较中,可以直接使用 > < 无需转义
Ø   [[ ]] 中字符串或者${}变量尽量如未使用"" 双引号扩住的话,会进行模式和元字符匹配
[root@localhostkuohao]# [[ "ab"=a* ]] && echo "ok"
  ok
Ø   [[] ] 内部可以使用 &&  || 进行逻辑运算
Ø   [[ ]] 是bash  keyword:[[ is a shell keyword
[[ ]] 其他用法都和[ ] 一样