shell编程中的条件语句
一、条件测试
1.1文件测试
test 测试文件的表达式 是否成立
格式1:test [操作符选项] 条件表达式
格式2:[ [操作符] 条件表达式 ]
操作符 | 作用 |
---|---|
-d | 测试是否为目录 |
-e | 测试目录或文件是否存在 |
-f | 测试 指定的对象是否为文件;指定的文件是否存在 |
-L | 测试文件是否为符号链接(软链接文件) |
-r | 测试 当前用户是否有读权限 |
-w | 测试 当前用户是否有写权限 |
-x | 测试 当前用户是否有执行权限 |
属性测试 | 作用 |
-t fd | fd 文件描述符是否在某终端已经打开 |
-s FILE | 是否存在且非空 |
-N FILE | 文件自从上一次被读取之后是否被修改过 |
-O FILE | 当前有效用户是否为文件属主 |
-G FILE | 当前有效用户是否为文件属组 |
- test [操作符选项] 条件表达式
- [ [操作符] 条件表达式 ]
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、逻辑测试
短路与:全真得真,一假全假
( cmd1 && cmd2 )
cmd1为真才有必要执行cmd2
cmd1为假就不用验证cmd2
短路或:有真得真,全假得假
cmd1 || cmd2
cmd1为真,也就不需要验证cmd2了
cmd1为假 才需要验证cmd2 判断整个式子的真假
两者只有一种组合:
cmd1 && cmd2 || cmd3 即(与在前或在后)
二、if语句
2.1、单分支
格式:
if [ 条件判断式 ]; then
当条件成功执行命令
fi
实例操作:
1 [root@localhost ~]# vim shu.sh
2
3 #!/bin/bash
4 if [ 1 -lt 3 ];
5 then
6 echo yes
7 fi
8
9 [root@localhost ~]# bash shu.sh
10 yes
2.2、多分支
格式:
if [ 条件判断式 ]; then
当条件成功执行命令
else
当条件成功执行命令
fi
实例操作:
1 [root@localhost ~]# vim ji.sh
2 #!/bin/bash
3 read -p "请输入分数:" t
4 if [ $t -ge 0 -a $t -le 59 ];
5 then echo "不及格"
6 elif [ $t -ge 60 -a $t -le 70 ];then
7 echo "及格"
8 else
9 echo "良好和优秀"
10 fi
11
12 [root@localhost ~]# bash ji.sh
13 请输入分数:14
14 不及格
三、case语句
case多分支语句针对变量的不同取值,分别执行不同的命令序列
case语句:适用于判断某一个固定值,固定字符串
案例
1 [root@localhost ~]# vim key.sh
2 #!/bin/bash
3 read -p "请输入一个键:" key
4 case $key in
5 [0-9])
6 echo "你敲击的是一个数字"
7 ;;
8 [a-z]|[A-Z])
9 echo "你敲击的是一个字母"
10 ;;
11 *)
12 echo "你敲击的是一个符号或功能键"
13 esac
14
15 [root@localhost ~]# bash key.sh
16 请输入一个键:z
17 你敲击的是一个字母