shell编程之条件语句
shell编程之条件语句
条件测试
文件测试与整数测试
test命令
测试表达式是否成立,若成立返回0,不成立返回其他数值
格式一:test 条件表达式
格式二:[ 条件表达式 ]
文件测试
文件测试常用选项:
常见的测试操作符 | 含义 |
---|---|
-d | 测试是否为目录(directory) |
-e | 测试目录或文件是否存在(Exist) |
-f | 测试是否为文件(File) |
-r | 测试当前用户是否有权限读取(Read) |
-w | 测试当前用户是否有权限写入(Write) |
-x | 测试当前用户是否有权限执行(eXcute |
-L | 测试是否为软连接文件 |
示例1:
示例2:
整数值比较
格式:[ 整数1 操作符 整数2 ]
常见测试操作符:
操作符 | 含义 |
---|---|
-eq | 等于(Equal) |
-ne | 不等于(Not Equal) |
-lt | 小于(Leser Than) |
-gt | 大于(Greater Than) |
-le | 小于或等于(Lesser or Equal) |
-ge | 大于或等于(Greater or Equal) |
示例:
字符串测试与逻辑测试
字符串比较
格式1:[ 字符串1 = 字符串2 ]
[ 字符串1 != 字符串2 ](这里的!表示取反的意思)
格式2:[ -z 字符串 ]
常用的测试操作符
=:字符串内容相同
!=:字符串内容不同
-z:字符串内容为空
操作符 | 含义 |
---|---|
= | 字符串内容相同 |
!= | 字符串内容不同 |
-z | 字符串内容为空 |
示例:
逻辑测试
格式1:[ 表达式1 ] 操作符 [ 表达式2 ]
格式2:命令1 操作符 命令2 ...
常见的测试操作符
-a或&&:逻辑与,“而且” 的意思
-o 或||:逻辑或,”或者“ 的意思
!:逻辑否
短路与&& 短路或||
示例:
if语句
if单分支语句
格式:
if 条件测试操作
then 命令顺序
fi
示例1:
示例2:
if单分支语句与$$效果一致
如果if后面的条件测试成立则执行then后的命令如果不成立则直接结束判断
[表达式1]&&[表达式2]
如果表达式1成立则执行表达式2如果不成立则不会执行
if双分支语句
格式:
if 条件测试操作
then 命令顺序1
else 命令顺序2
fi分支语句
示例1:
示例2:
示例3:
[root@localhost data]# vim fz.sh
if双分支语句与&& || 效果一致
如果if后面的条件成立则执行then后命令如果不成立则执行else后命令
[表达式1] $$ [表达式2] || [表达式3]
如果表达式1成立则执行表达式2如果不成立则执行表达式3
if多分支语句
格式:
if 条件测试操作1
then 命令序列1
elif 条件测试操作2
then命令序列2
else命令序列3
fi分支语句
示例:判断分数范围,分出优秀、合格、不合格三档
[root@localhost data]# vim fz.sh
示例2:判断当前时间输出不同问好
[root@localhost data]# vim fz.sh
case语句
格式:
case 变量值 in
模式1)
命令序列1
;;
模式2)
命令序列2
;;
*
默认命令序列
esac
注意点:
- case行首必须以单词“in”,每一模式必须以单个右括号")"结束
- 双分号";;"表示命令序列的结束
- 模式字符串中,可以用方括号表示一个连续的范围,如"[0-9]";还可以使用竖杠|表示或。
- 最后的*)表示默认模式,其中的 * 表示其他
示例:判断分数范围,分出超级棒、优秀、合格、不合格四档
[root@localhost data]# vim yj.sh
示例2:远程连接服务器
[root@localhost data]# vim yj.sh