第二天:条件测试表达式

2019-07-18  本文已影响0人  古巷挂青灯

3.1 shell的条件测试

条件测试,作用是验证条件是否符合预期。以下是常用语法

条件测试语法 说明
语法1:test <测试表达式> 利用test命令测试条件表达式。test命令和” <测试表达式>”之间至少有一个空格
语法2:[ <测试表达式> ] 通过[](单中括号)测试条件表达式的方法,和test命令的用法相同,注意[]的边界和内容之间至少有一个空格
语法3:[[ <测试表达式> ]] 通过[[]](双中括号)测试条件表达式的值的方法,是比test和[]更新的语法格式。[[]]的边界和内容之间至少有一个空格
语法4:((测试表达式)) 通过(())(双小括号)进行测试条件表达式的方法,一般用于if语句里。(())双小括号两段不需要有空格

针对以上表有几个注意事项需要说明:

第一张.jpeg

n []条件测试语句示例


第二年.jpeg
[ 条件1 ] && {
命令1
命令2
...
}
[[ 条件1 ]] && {
命令1
命令2
...
}
test 条件1 && {
命令1
命令2
...
}

3.2 文件测试表达式

对于文件测试表达式中,常用的文件测试操作符如下所示:

类型 说明
[ -f file ],f的全称为file 文件存在
[ -e file ],e的全称为exist 文件(夹)存在
[ -d dir ],d的全称为directory 是目录
[ -L file ],L的全称为link 是软链接
[ -s file ],s的全称为size 文件存在且非空
[ -S file ],S的全称为Socket 文件是Socket文件
[ -r file ],r的全称为read 文件可读
[ -w file ],w的全称为write 文件可写
[ -x file ],x的全称为executable 文件可执行

练习:
以脚本传参和read读入的方式输入两个文件路径,任意一个文件不存在,则提示用户第几个文件不存在,并退出脚本(两个脚本)

# 第一个文件不存在,则
[ -f $1 ] || {
echo "第一个文件不存在"
exit
}
 # 第二个文件不存在,则

注:建议大家:在脚本的健壮性为前提下,重复的代码尽量简化

3.3 字符串测试表达式

字符串测试表达式的作用:比较两个字符是否相同、测试字符串的长度是否为0、字符串是否为NULL等,常用的字符串操作符如下所示:

表达式 说明
[ “a” = “b” ] 测试字符串是否相等。用作赋值时两边不能有空格,用做判断时必须有空格。
[ “a” != “b” ] 测试字符串是否不相等
[ -n “$str” ] 判断字符串是否非空
[ -z “$str” ] 判断字符串是否为空
[ $str ] 判断字符串是否非空,类似于 -n

注意:对于字符串测试的时候,一定要把字符串加双引号,如[ -n “myvar” ]、[ “a =b” ]

3.4 整数二元比较操作符

整数二元比较操作符使用参考

在[]以及test中使用的比较符号 在(())和[[]]中使用的比较符号 说明
-eq ==或= 相等的英文equal
-ne != 不相等的英文not equal
-gt > 大于的英文greater than
-ge >= 大于等于的英文greater equal
-lt < 小于的英文less than
-le <= 小于等于的英文less equal

注意:不推荐使用[[]]和>、<等符号比较数字,因为在大小比较中,[[]]比较的是字符串的arscII码
有关[]、[[]]、(())用法小结

3.5 逻辑操作符

在[]和test中使用操作符 在[[]]和(())中使用操作符 说明
-a && and,与运算,两端都真则为真
-o || or,或运算,两端有一个为真则真
! ! not,非,相反为真

注意,连接两个含有[]、test或者[[]]的表达式用&&、||

上一篇下一篇

猜你喜欢

热点阅读