Shell编程之条件语句

1. 条件测试

方法一:test   (通常使用命令)
[root@localhost ~]# test -d /aaa
[root@localhost ~]# echo $?
1

方法二: [      ]    (通常使用脚本环境下)
[root@localhost ~]# [ -d /mnt ]
[root@localhost ~]# echo $?
0

1.1 文件测试

选项:

  •  -d   测试是否为目录  directory
  • -e    测试文件或目录是否存在  exist
  • -f    测试是否是文件   file
  • -r     是否有读写权限
  • -w    是否有写入权限
  • -x    是否有执行权限

利用$?查询是否存在,若为0,即存在;非0为不存在。

1.2整数值比较

选项:

  • eq: 第一个数等于 (Equal) 第二个数。
  • -ne: 第一个数不等于 (Not Equal) 第二个数。
  • -gt: 第一个数大于 (Greater Than) 第二个数
  • -lt: 第一个数小于 (Lesser Than) 第二个数。
  • -le: 第一个数小于或等于 (Lesser or Equal) 第二个数
  • -ge: 第一个数大于或等于 (Greater or Equal) 第二个数

1.3 字符串表示

选项:

  • =: 第一个字符串与第二个字符串相同。
  • !=:第一个字符串与第二个字符串不相同,其中“!”符号表示取反。
  • -z: 检查字符串是否为空 (Zero),对于未定义或赋予空值的变量将视为空串。

1.4逻辑测试

  • &&:逻辑与,表示“而且”,只有当前后两个条件都成立时,整个测试命令的返回值才为 0(结果成立)。使用 test 命令测试时,“&&”可改为“-a”。
  • | |:逻辑或,表示“或者”,只要前后两个条件中有一个成立,整个测试命令的返回值即为 0(结果成立)。使用 test 命令测试时,“||”可改为“-o”。
  • !: 逻辑否,表示“不”,只有当指定的条件不成立时,整个测试命令的返回值才为 0(结果成立)。
     

2. IF语句

2.1 单分支if语句

语法格式:
 

单分支if 语句的执行流程:
首先判断条件测试操作的结果,如果返回值为 0,表示条件成立,执行 then 命令序列,fi结束判断;如果返回值不为 0,则忽略 then 后面的命令序列,直接跳至 fi 执行其他脚本代码,如图 2.1 所示。

2.2双分支if 语句

语法格式:


双分支 if 语句的执行流程:
首先判断条件测试操作的结果,如果条件成立,则执行 then后面的命令序列 1,忽略 else 及后面的命令序列 2,直到遇见fi结束判断: 如果条件不成立则忽略 then 及后面的命令序列 1,直接跳至 else 后面的命令序列 2 并执行,直到遇见 fi 结束判断,如图 2.2 所示。

2.3多分支if语句

语法格式:


多分支if 语句的执行流程:
首先判断条件测试操作 1 的结果,如果条件 1 成立,则执行命令序列 1,然后跳至fi 结束判断: 如果条件 1 不成立,则继续判断条件测试操作 2 的结果,如果条件 2 成立,则执行命令序列 2,然后跳至fi 结束判断......如果所有的条件都不满足,则执行 else 后面的命令序列 n,直到遇见f结束判断,如图 2.3 所示。 

[root@localhost ~]# vim qqq.sh
#!/bin/bash
read -p "请输入成绩" GRADE
if [ $GRADE -ge 80 ] && [ $GRADE -le 100 ]
        then
                echo "成绩是${GRADE}分,优秀"
elif [ $GRADE -ge 60 ] && [ $GRADE -lt 80 ]
        then
                echo "成绩是${GRADE}分,合格"
elif [ $GRADE -ge 0 ] && [ $GRADE -lt 60 ]
        then
                echo "不合格"
else
                echo "数字不正确"
fi
[root@localhost ~]# bash qqq.sh
请输入成绩54
不合格
[root@localhost ~]# bash qqq.sh
请输入成绩76
成绩是76分,合格
[root@localhost ~]# bash qqq.sh
请输入成绩98          
成绩是98分,优秀

3. case语句

[root@localhost ~]# vim aaa.sh

#!/bin/bash
read -p "请输入字符:" key
case "$key" in
[A-Z])
        echo "字母"
;;

[0-9])
        echo "数字"
;;
*)
        echo "错误信息"

esac

[root@localhost ~]# bash aaa.sh
请输入字符:R
字母
[root@localhost ~]# bash aaa.sh
请输入字符:6
数字

  • 33
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值