一, 条件判断语句
满足条件执行对应命令
[条件]: 一般多用于脚本内
例:
[ -f /etc/hosts ]
test 条件: 一般多用于 Linux 字符终端
1. 文件或目录判断
-f: 判断是否为文件
-d: 判断是否为目录
-e: 判断是否存在
-r: 判断文件 / 目录是否拥有读取权限
-w: 判断文件 / 目录是否拥有写入权限
-x: 判断文件 / 目录是否拥有执行权限
例:
- [ -f /etc/hosts ] // 判断 / etc/hosts 是否为一个文件, 如是一个文件, 则 echo $? 肯定为 0
- [ ! -f /etc/hosts ] ; touch /etc/hosts // 判断 / etc/hosts 是否是一个文件, 如不是一个文件, echo $? 肯定为 0
- [ -d /etc ] // 判断 / etc 是否为一个目录, 如是一个目录, 则 echo $? 肯定为 0
- [ -w /etc/hosts ] // 判断 / etc/hosts 是否拥有写入权限, 如拥有写入权限, 则 echo $? 肯定为 0
- [ -e /boot ] // 判断 / boot 是否存在, 如存在, 则 echo $? 肯定为 0
2. 数值比较
-eq: 判断两边数值是否相等
-ne: 判断两边数值是否不等
-gt: 判断左边数值是否大于右边数值
-ge: 判断左边数值是否大于等于右边数值
-lt: 判断左边数值是否小于右边数值
-le: 判断左边数值是否小于等于右边数值
例:
- [ 1 -eq 1 ] // 判断 1 是否等于 1, 如等于则 echo $? 肯定为 0
- [ 3 -le 5 ] // 判断 3 小于等于 5, 如小于等于则 echo $? 肯定 0
注: 数值比较只能比较整数
3. 字符串比较
==: 判断两边字符串是否完全相等
-z: 判断后需变量值是否未空
例:
- [ $PWD == /root ] // 判断 PWD 变量值是否等于 / root, 如等于则 echo $? 肯定为 0
- [ ! $PWD == /root ] // 判断 PWD 变量值是否等于 / root, 如不等于则 echo $? 肯定为 0
- [ -z $PWD ] // 判断 PWD 变量值是否为空, 如为空则 echo $? 肯定为 0
注: 字符串指字母, 数字, 中文
4. 逻辑测试
&& 或 ; 或 -a // 并且关系, 条件成立继续执行; make && make install(前命令执行成功后继续执行后续命令);find / -name a* - a -type f
|| 或 -o // 或者关系, 满足任一条件继续执行; find / -name a* - o -type f
! 条件取反
二, if 语句
单分支语句: 满足条件, 则执行下面的命令; 命令效果与 [ -f /etc/a ] && chmod +x /etc/a
if [ 条件判断语句 ]
then
命令
fi
例:
- if [ -f /etc/a ]
- then
- chmod +x /etc/a
- fi
双分支语句: 满足条件, 则执行命令一, 如不满足条件, 执行命令二
if [ 条件判断语句 ]
then
命令一
else
命令二
fi
多分支语句: 满足判断一则执行命令一, 如不满足则继续判断二, 满足则执行命令二, xxxx, 如都不满足则执行命令 x
if [ 条件判断语句一 ]
then
命令一
elif [ 条件判断语句二 ]
then
命令二
elif [ 条件判断语句三 ]
then
命令三
else
命令 x
- fi
- #!/bin/bash
- read -p "请输入您的分数:[1-100]" A
- if [ $A -le 100 ]
- then
- if [ $A -eq 100 ]
- then
- echo "优"
- elif [ $A -le 89 ] && [ $A -ge 70 ]
- then
- echo "良"
- elif [ $A -le 69 ] && [ $A -ge 60 ]
- then
- echo "及格"
- else
- echo "你退群吧!!!"
- fi
- else
- echo "你能不行行"
- fi
注解: if 先行判断用户输入数值是否在 100 以内, 如在 100 以内继续判断, 如不在则返回 "你能不行行"
来源: http://www.bubuko.com/infodetail-2699296.html