1. test测试
Shell环境根据命令执行后的返回状态值($?) 来判断是否执行成功。
当返回值为0时表示成功,返回值为非0值时表示失败或异常,test命令,可以对特定条件进行测试,并根据返回值来判断条件是否成立($?返回值为0表示条件成立)。
1 格式1: test 条件表达式 2 格式2: [ 条件表达式 ]
测试表达式是否成立,若成立返回值为0,否则返回其他数值。
2. 文件/目录测试
格式为:操作符 文件名或者目录名
常用的测试操作符
1 -d∶ 测试是否为目录(Directory) 2 3 -e∶ 测试目录或文件是否存在(Exist) 4 5 -f∶ 测试是否为文件(File) 6 7 -r∶ 测试当前用户是否有权限读取(Read) 8 9 -w∶ 测试当前用户是否有权限写入(Write) 10 11 -x∶ 测试当前用户是否有权限执行(eXcute) 12 13 -L∶ 测试是否为软链接文件
整数值比较
格式为:[ 整数1 操作符 整数2 ]
常用的测试操作符
1 -eq∶ 等于(Equal) 2 3 -ne∶ 不等于(Not Equal) 4 5 -gt∶ 大于(Greater Than) 6 7 -It∶ 小于(Lesser Than) 8 9 -le∶ 小于或等于(Lesser orEqual)· 10 11 -ge∶ 大于或等于(Greateror Equal)
字符串比较
1 格式1 2 3 【 字符串1 = 字符串2 】 4 【 字符串1 != 字符串2 】 5 6 格式2 7 8 【 -z 字符串 】 #是否空值 9 【 -n 字符串 】 #字符集是否存在
常用的测试操作符
- =: 字符串内容相同
- !=: 字符串内容不同,! 号表示相反的意思
- -z: 字符串内容为空
逻辑测试
1 格式1:[ 表达式 1 ] 操作符 [ 表达式 2 ] 2 3 格式2:命令1 操作符 命令2
常用的测试操作符
- -a或&&: 逻辑与,‘‘而且" 的意思.
- -o或||: 逻辑或,“或者” 的意思
- !: 逻辑否
3. if条件语句
单分支结构
如果只有一个判断式要进行,那么我们可以使用单分支的if语句
1 if [ 条件判断式 ]; than 2 当条件判断成立时,可以进行的命令工作内容 3 fi #这里将if反过来写,结束if语句的意思
例:
使用if语句判断输入的内容是否为整数
多分支结构
如果数据需要进行多种不同的判断,则可以使用多分支结构
1 if [ 条件判断式 ]; than 2 当条件判断成立时,可以进行的命令工作内容 3 elif [ 条件判断式二 ]; than 4 当条件判断成立时,可以进行的命令工作内容 5 else 6 当上面的条件判断都不成立时,可以进行的命令工作内容 7 fi
例:
- 考试成绩100满分
- 80~100分为优秀
- 60~80分为良好
- 0~60分为不及格
4. case条件语句
1 case 变量名称 in 2 “第一个变量内容” 3 程序段 4 ;; 5 “第二个变量内容” 6 程序段 7 ;; 8 *) 9 不包含第一个变量内容与第二个变量内容的其他程序执行段 10 默认程序段 11 ;; 12 esac
例1:
- 提示用户输入100米赛跑的秒数
- 要求判断秒数大于0且小于等于10秒的进入选拔赛
- 大于10秒的都淘汰
- 如果输入其它字符则提示重新输入;
- 进入选拔赛的成员再进一步判断男女性别,男生进男生组,女生进女生组,如果输入错误请提示错误
例2:
- 用case语句在/etc/init.d/目录中写一个firewalld脚本
- 并加入到系统服务管理中
- 使能够使用 service firewalld start|stop|restart|status 来管理firewalld服务
- 要求如果命令选项不对,则提示 “用法: $0 {start|stop|status|restart}”