Shell脚本中的if判断
在写shell脚本的时候,条件判断是最常用到的,尤其刚写shell脚本的时候,一些高级命令语法不会使用,到处都是if。
但if的参数及用法其实也并不少,想要用的好,也要下一些功夫。下面我们一起来看下:
if的基本语法
最简单用法
1 |
|
condition
是判断条件,如果condition
成立,那么 then 后边的语句将会被执行;如果 condition
不成立,那么不会执行任何语句。
从本质上讲,if 检测的是命令的退出状态.
==注意:最后必须以fi
来闭合,fi 就是 if 倒过来拼写。==
示例:
1 |
|
输入结果:
1 |
|
多分支判断
1 |
|
示例:
1 |
|
输出结果:
1 |
|
if判断中的参数
文件/文件夹(目录)判断
下面粗体几个是最常用的
- [ -b FILE ] 如果 FILE 存在且是一个块特殊文件则为真。
- [ -c FILE ] 如果 FILE 存在且是一个字特殊文件则为真。
- [ -d DIR ] 如果 DIR 存在且是一个目录则为真。
- [ -e FILE ] 如果 FILE 存在则为真。
- [ -f FILE ] 如果 FILE 存在且是一个普通文件则为真。
- [ -g FILE ] 如果 FILE 存在且已经设置了SGID则为真。
- [ -k FILE ] 如果 FILE 存在且已经设置了粘制位则为真。
- [ -p FILE ] 如果 FILE 存在且是一个名字管道(F如果O)则为真。
- [ -r FILE ] 如果 FILE 存在且是可读的则为真。
- [ -s FILE ] 如果 FILE 存在且大小不为0则为真。
- [ -t FD ] 如果文件描述符 FD 打开且指向一个终端则为真。
- [ -u FILE ] 如果 FILE 存在且设置了SUID (set user ID)则为真。
- [ -w FILE ] 如果 FILE存在且是可写的则为真。
- [ -x FILE ] 如果 FILE 存在且是可执行的则为真。
- [ -O FILE ] 如果 FILE 存在且属有效用户ID则为真。
- [ -G FILE ] 如果 FILE 存在且属有效用户组则为真。
- [ -L FILE ] 如果 FILE 存在且是一个符号连接则为真。
- [ -N FILE ] 如果 FILE 存在 and has been mod如果ied since it was last read则为真。
- [ -S FILE ] 如果 FILE 存在且是一个套接字则为真。
- [ FILE1 -nt FILE2 ] 如果 FILE1修改日期比FILE2更近(FILE1比FILE2新)或者 如果FILE1存在且FILE2 不存在则为真。
- [ FILE1 -ot FILE2 ] 如果 FILE1 比 FILE2 老, 或者 FILE2 存在且 FILE1 不存在则为真。
- [ FILE1 -ef FILE2 ] 如果 FILE1 和 FILE2 指向相同的设备和节点号则为真。
字符串判断
- [ -z STRING ] 如果STRING的长度为零则为真 ,即判断是否为空,空即是真;
- [ -n STRING ] 如果STRING的长度非零则为真 ,即判断是否为非空,非空即是真;
- [ STRING1 = STRING2 ] ([ STRING1 == STRING2 ],与=等价)如果两个字符串相同则为真 ;
- [ STRING1 != STRING2 ] 如果字符串不相同则为真 ;
- [ STRING1 ] 如果字符串不为空则为真,与-n类似
数值判断
- -eq 等于,如:if [ “$a” -eq “$b” ]
- -ne 不等于,如:if [ “$a” -ne “$b” ]
- -gt 大于,如:if [ “$a” -gt “$b” ]
- -ge 大于等于,如:if [ “$a” -ge “$b” ]
- -lt 小于,如:if [ “$a” -lt “$b” ]
- -le 小于等于,如:if [ “$a” -le “$b” ]
- < 小于(需要双括号),如:((“$a” < “$b”))
- <= 小于等于(需要双括号),如:((“$a” <= “$b”))
- > 大于(需要双括号),如:((“$a” > “$b”))
- >= 大于等于(需要双括号),如:((“$a” >= “$b”))
复杂逻辑判断
- -a 与 &&
- -o 或 ||
- ! 非
示例:
1 |
|
输出结果:
1 |
|
蚂蚁🐜再小也是肉🥩!
Shell脚本中的if判断
http://heibanbai.com.cn/posts/7cb45e0f/
“您的支持,我的动力!觉得不错的话,给点打赏吧 ୧(๑•̀⌄•́๑)૭”
微信支付
支付宝支付