bash编程-条件测试
Shell脚本中经常需要判断某情况或者数据是否满足,需要由测试机制来实现。
测试方式
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编程-条件测试的更多相关文章
- bash之条件测试if/else
bash之条件测试: if/then结构 条件测试(CONDITION): test EXPRESSION:测试条件表达式正确否 [ EXPRE ...
- bash Shell条件测试
3种测试命令: test EXPRESSION [ EXPRESSION ] [[ EXPRESSION ]] 注意:EXPRESSION前后必须有空白字符 bash的测试类型 数值测试: -eq: ...
- Shell编程-条件测试 | 基础篇
什么是Shell Shell是一个命令解释器,它会解释并执行命令行提示符下输入的命令.除此之外,Shell还有另一个功能,如果要执行多条命令,它可以将这组命令存放在一个文件中,然后可以像执行Linux ...
- linux基础09-bash编程(条件测试和特殊变量)
(1)整数测试 INT1=63 INT2=77 [ $INT1 -eq $INI2 ] [[ $INT1 -eq $INT2 ]] test $INT1 -eq $INT2 文件测试: -e FILE ...
- shell编程:条件测试与比较(六)
条件测试方法综述 test条件测试的简单语法及测试 范例6-1 测试文件(在test命令中使用-f选项:文件存在且为不同文件则表达式成立) [root@adminset ~]# test -f fil ...
- linux bash编程之算数运算和测试类型(第二篇)
写在最前边:在bash中数据类型有两种,分别是数值型和字符型.其中字符型是默认的. 1.算数运算 · 运算符 · 语法 1.1.运算符:+.-.*./.%.** 注意:有些时候 *(乘号)需要转义 1 ...
- SHELL脚本编程的条件测试
SHELL脚本编程的条件测试 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.条件测试概述 判断某需求是否满足,需要由测试机制来实现 专用的测试表达式需要由测试命令辅助完成测试过 ...
- Shell编程-05-Shell中条件测试与比较
目录 Shell脚本条件测试 Shell文件测试 Shell字符测试 Shell整数测试 Shell逻辑测试 Shell条件测试总结 Shell脚本条件测试 在Shell脚本中各种条件结构和流 ...
- linux shell编程(二) 条件测试
bash中常用的条件测试有三种 条件测试的表达式:[ expression ] [[ expression]] 第一种:整数测试: -eq 测试两个整数是否相等,比如[ $A -eq $B ] -n ...
随机推荐
- 63(原67).纯 CSS 创作单元素点阵 loader
原文地址:https://segmentfault.com/a/1190000015444368 感想:CSS又一次让我见识到它的强大之处 --> box-shadow . box-shadow ...
- 判断文件的唯一性--MD5
JAVA中获取文件MD5值的四种方法 JAVA中获取文件MD5值的四种方法其实都很类似,因为核心都是通过JAVA自带的MessageDigest类来实现.获取文件MD5值主要分为三个步骤,第一步获 ...
- sample function
#coding:utf8 import requests import json import ssl import datetime import urllib import sys import ...
- html 中使用 iconfont、fontAwesome
在HTML中尽量使用iconfont 替代图片有很多好处,而且方便,可以设置大小.颜色 等 可以用于字体的设置. 一.使用iconfont 1.打开iconfont 官网 iconfont.cn. 2 ...
- 加入EOS主网
[加入EOS主网] 根据之前的博文,可以直接在本地测试单节点网络.这里再给出一下.详情见[参考1]. alias cleos='docker exec -it eosio /opt/eosio/bin ...
- ASP.NET网站报Service Unavailable错误的解决办法
现象:网站打不开,提示 service unavailable 原因:IIS资源不足,程序占用资源太多,应用程序池会被自动禁用 解决办法:重启IIS,在命令行中输入iisreset即可
- Java 虚拟机概述
虚拟机是一种抽象化的计算机,通过在实际的计算机上仿真模拟各种计算机功能来实现的.Java虚拟机有自己完善的硬体架构,如处理器.堆栈.寄存器等,还具有相应的指令系统.Java虚拟机屏蔽了与具体操作系统平 ...
- 2. Go变量(Variables)
变量是什么,变量的命名规则,以及一些关于变量的基础没有必要再说了,我想学习Go语言的有很多都是从其他语言转过来的,那我们直接进入正题. 声明一个变量: var age int 给变量赋值: age = ...
- mysql学习笔记--数据完整性
一.数据完整性包括: 1. 域完整性 2. 实体完整性 3. 引用完整性 二.保证实体完整性 1. 主键约束 2. 唯一约束 3. 自动增长列 三.保证域完整性 1. 数据类型约束 2. 非空约束 3 ...
- Zabbix告警脚本-短信
[root@iot-svndata02 bin]# cat zbsms.sh #!/bin/sh #curl http://221.179.180.137:8080/smsaServer/lkSend ...