bash编程-条件测试
2017-07-16 17:14
232 查看
Shell脚本中经常需要判断某情况或者数据是否满足,需要由测试机制来实现。
bash脚本中可以自定义返回值
测试表达式
示例
字符串测试
示例
文件测试
组合测试的两种方式:
测试方式
echo $?查看命令执行状态返回值
bash脚本中可以自定义返回值
exit n(n为自己指定的状态码),shell进程遇到exit时,即会终止,因此,整个脚本执行即为结束;
0:成功 1-255:失败
测试表达式
# EXPRESSION两端必须有空白字符,否则为语法错误; test EXPRESSION [ EXPRESSION ] [[ EXPRESSION ]]
测试类型
数值测试-eq:是否等于; [ $num1 -eq $num2 ] -ne:是否不等于; -gt:是否大于; -ge:是否大于等于; =-lt:是否小于; =-le:是否小于等于;
示例
# 测试2等于3 [root@VM_41_201_centos sh]# test 2 -eq 3 [root@VM_41_201_centos sh]# echo $? 1 # 测试2不等于3 [root@VM_41_201_centos sh]# test 2 -ne 3 [root@VM_41_201_centos sh]# echo $? 0 # a=2,b=1,测试a大于b [root@VM_41_201_centos sh]# a=2 [root@VM_41_201_centos sh]# b=1 [root@VM_41_201_centos sh]# [ $a -gt $b ] [root@VM_41_201_centos sh]# echo $? 0
字符串测试
# 注意:(1) 字符串要加引用;(2) 要使用[[ ]]; ==:是否等于; >:是否大于; <:是否小于; !=:是否不等于; =~:左侧字符串是否能够被右侧的PATTERN所匹配; -z "STRING":判断指定的字串是否为空;空则为真,不空则假; -n "STRING":判断指定的字符串是否不空;不空则真,空则为假;
示例
# 测试“a”等于“b” [root@VM_41_201_centos sh]# [[ "a" == "b" ]] [root@VM_41_201_centos sh]# echo $? 1 # 测试“abc123”匹配模式a* [root@VM_41_201_centos sh]# [[ "abc123" =~ a* ]] [root@VM_41_201_centos sh]# echo $? 0 # 测试变量test是否为空 [root@VM_41_201_centos sh]# [[ -z $test ]] [root@VM_41_201_centos sh]# echo $? 0
文件测试
# 存在性测试 -a FILE -e FILE # 存在性及类型测试 -b FILE:是否存在并且为 块设备 文件; -c FILE:是否存在并且为 字符设备 文件; -d FILE:是否存在并且为 目录文件; -f FILE:是否存在并且为 普通文件; -h FILE或 -L FILE:是否存在并且为 符号链接文件; -p FILE:是否存在且为 命名管道文件; -S FILE:是否存在且为 套接字文件; # 文件权限测试 -r FILE:是否存在并且 对当前用户可读; -w FILE:是否存在并且 对当前用户可写; -x FILE:是否存在并且 对当前用户可执行; # 特殊权限测试 -u FILE:是否存在并且 拥有suid权限; -g FILE:是否存在并且 拥有sgid权限; -k FILE:是否存在并且 拥有sticky权限; # 文件是否有内容 -s FILE:是否有内容; # 时间戳 -N FILE:文件自从上一次读操作后是否被修改过; # 从属关系测试 -O FILE:当前用户是否为文件的属主; -G FILE:当前用户是否属于文件的属组; # 双目测试 FILE1 -ef FILE2:FILE1与FILE2是否指向同一个文件系统的相同inode的硬链接; FILE1 -nt FILE2:FILE1是否新于FILE2; FILE1 -ot FILE2:FILE1是否旧于FILE2;
组合测试
bash脚本中支持讲多个测试条件组合,一般为逻辑与、或、非等。组合测试的两种方式:
# 1.&&、||、! COMMAND1 && COMMAND2 COMMAND1 || COMMAND2 ! COMMAND 如:[ -O FILE ] && [ -r FILE ] # 2.-a、-o EXPRESSION1 -a EXPRESSION2 EXPRESSION1 -o EXPRESSION2 ! EXPRESSION 如:[ -O FILE -a -x FILE ]
相关文章推荐
- bash编程之if语句条件测试
- bash脚本编程之条件判断及测试
- #7 shell脚本编程之bash运算和条件测试命令
- Linux01-bash脚本编程之六使用脚本选项及组合条件测试23
- linux笔记 第六天 bash编程入门之变量、条件判断、条件测试和for循环等
- 第七课-第二讲 07_02_bash脚本编程之六 使用脚本选项及组合条件测试
- bash编程之条件测试if/then
- linux shell编程(二) 条件测试
- Linux Shell编程(三)--条件测试
- bash脚本编程之条件判断、算术运算及实例
- bash条件判断之常用测试类型
- bash的算术运算和条件测试语句基础
- bash的算术运算与条件测试
- 6-3 bash脚本编程之五 字符串测试及for循环
- Bash编程的test和条件语句
- shell脚本编程之条件测试和判断
- LinuxShell脚本编程基础4-条件测试与条件判断
- SHELL 编程 -- 条件测试
- bash之条件测试及if语句
- bash编程之 条件判断