BASH常用条件测试

bash常用条件测试

1.整数测试

-gt 是否大于
-le 是否小于等于
-ne 是否不等于
-eq 是否等于
-ge 是否大于等于
-lt 是否小于

[[email protected] ~]# in=2
[[email protected] ~]# en=3
[[email protected] ~]# [ $in -eq $en ]
[[email protected] ~]# echo $?
1
#$?是用来查看上一条命令执行状态;0位true 1或1以上都是为false

[[email protected] ~]# [ $in -lt $en  ]
[[email protected] ~]# echo $?
0




2.文件测试

1.文件存在及类别测试

-a file 测试文件是否存在
-e file 测试文件是否存在
-s file 测试文件是否为非空
-h file 测试文件是否为链接文件
-p file 测试文件是否为命名管道文件
-c field 测试文件是否为字符设备文件
-f file 测试文件是否为普通文件
-d file 测试文件是否为目录
-S file 测试文件是否为套接字文件

[[email protected] ~]# [ ! -e 2.sh ]
[[email protected] ~]# echo $?
1
#测试 2.sh文件是否不存在(!取反)
[[email protected] ~]# [ ! -e ll.sh ]
[[email protected] ~]# echo $?
0
#测试文件 ll.sh是否不存在
[[email protected] ~]# ll 2.sh 
-rw-r--r--. 1 root root 101 Aug 11 22:50 2.sh
[[email protected] ~]# ll ll.sh
ls: cannot access ll.sh: No such file or directory
[[email protected] ~]# 
#查看文件的的存在状态已证明上面的测试条件

2.文件权限测试

-r file 测试当前用户对指定文件是否有读权限
-w file 测试当前用户对指定文件是否有写权限
-x file 测试当前用户对指定文件是否有执行权限
-O file 当前有效用户是否为文件属主
-G file 当前有效用户是否为文件属组

[[email protected] ~]# [ -r 2.sh ]
[[email protected] ~]# echo $?
0
[[email protected] ~]# ll 2.sh 
-rw-r--r--. 1 root root 101 Aug 11 22:50 2.sh
#测试当前用户对2.sh是否有读权限
-g file 是否存在拥有sgid权限
-u file 是否存在拥有suid权限
-k file 是否存在拥有sticky权限

3.文件是否打开测试

-t fd fd表示文件描述是否已经打开且与某终端相关
-N file 文件自上一次读取后是否被修改过

4.双目测试

file1 -ef file2 两个文件的inode是否指向同一个设备
file1 -nt file2 file1是否新于file2
file1 -ot file2 file是否旧于file2

[[email protected] testdir]# [ q  -nt createuser.sh ]&&echo "ok"
#测试文件q 是否新于createuser.sh 无反馈值  false
[[email protected] testdir]# [ q  -ot createuser.sh ]&&echo "ok"
ok
#测试文件q文件是否旧于createuser.sh 反馈为ok true
[[email protected] testdir]# ll q createuser.sh 
-rw-r--r--. 1 root root  0 Aug 15 20:10 createuser.sh
-rw-r--r--. 1 root root 21 Aug 15 16:11 q

5.组合测试条件

command1 && command2 #并且 ,既满足前面的测试条件又满足后面的测试条件
[[email protected] bin]# [ -e cat ]&&[ -r cat ]&& echo "yes"
yes
command1||command2 #或者 ,满足其中一个测试条件
[[email protected] bin]# [ -e cat ]||[ -r cat ]&& echo "yes"
yes

还可以使用参数来用来组合测试

-a 并且
-o 或者
[[email protected] testdir]# ll q
-rw-r--r--. 1 root root 21 Aug 15 16:11 q
#以上为文件q相关属性信息
[[email protected] testdir]# [ -e q -a -x q ]
[[email protected] testdir]# echo $?
1
#测试文件q是否存在并且当前用户拥有执行权限
[[email protected] testdir]# [ -e q -o -x q ]
[[email protected] testdir]# echo $?
0
#测试文件q是否存在或者是否有执行权限,因为满足存在所有反馈为0true
[[email protected] testdir]# [ -e q -a -r q ]
[[email protected] testdir]# echo $?
0 
#测试文件是否存在并且有读权限,因为两个测试条件都满足,所以反馈为0 true



3.字符串测试

==:是否等于;
>: ascii码是否大于ascii码
<: 是否小于
!=: 是否不等于
=~: 左侧字符串是否能够被右侧的PATTERN所匹配
注意: 此表达式一般用于[[ ]]中;
-z "STRING":字符串是否为空,空为真,不空为假
-n "STRING":字符串是否不空,不空为真,空为假
#注意:用于字符串比较时的用到的操作数都应该使用引号
[[email protected] testdir]# a1=abc
[[email protected] testdir]# a2=cba
[[email protected] testdir]# [ "$a1" == "$a2" ]&&echo "ok"
[[email protected] testdir]# a2=abc
[[email protected] testdir]# [ "$a1" == "$a2" ]&&echo "ok"
ok
时间: 2024-12-06 10:52:04

BASH常用条件测试的相关文章

bash Shell条件测试

3种测试命令: test EXPRESSION [ EXPRESSION ] [[ EXPRESSION ]]  注意:EXPRESSION前后必须有空白字符 bash的测试类型 数值测试: -eq:是否相等 -ne:是否不等 -ge:是否大于等于 -le:是否小于等于 -gt:是否大于 -lt:是否小于 字符串测试: =或==:是否等于 >:是否大于 <:是否小于 !=:是否不等于 =~:左侧字符串是否能够被右侧PATTERN所匹配 [[  ]]中使用 -z "STRING&quo

bash脚本编程之变量、变量类型、条件测试、算术运算、及特殊变量

一.学习目的 1.了解bash脚本的变量类型及变量的使用 2.了解bash中条件测试的种类及如何在bash中实现条件的判断 3.学会在bash中做算术运算 4.了解特殊变量的使用 二.学习内容 1). ①.bash的变量类型: 环境变量 .本地变量.局部变量.位置变量.特殊变量 环境变量: export VALUENAME = VALUE 作用领域是当前的shell进程及其子进程 本地变量: VALUENAME= VALUE 作用领域为整个bash的进程 局部变量:local VALUENAME

bash编程之:条件测试

日期: 2015年09月13日 <<========================================[条件测试]========================================>> 条件测试 bash的条件测试主要有以下3类: 整数测试:比较两个整数谁大谁小,是否相等: 字符测试:比较两个字符串是否相等: 文件测试:测试某个文件是否具有读权限.写权限.执行权限等: (1) 根据运行的命令的状态结果判断 (2) 在bash中进行条件测试的方式通常有三种

《跟老男孩学Linux运维之shell编程实战》-第五章 shell脚本的条件测试

本文的知识点是关于shell脚本的条件测试的相关内容. 通常在shell脚本中我们需要做各式各样的条件判断,比如,测试一个文件是否存在.是否为文件或目录.是否 具有执行权限等等,所以在shell脚本中,条件判断还是至关重要的.接下来我们进入正题:shell脚本的条件测试. 1.在bash编程中,条件测试常用的语法形式如下表: 提示: 语法1中的test命令和语法2中的[]是等价的.语法3中的[[]]双中括号为扩展的test命令. 语法4中的(())常用于计算. 在双中括号[[]]中可以使用通配符

linux命令中bash常用的条件测试:整数测试eq,文件测试-e,字符串测试==

测试方法:expression: 表达,表示 [ expression ] [[ expression ]] test expression  bash中常用的条件测试有三种:  1.整数测试:      -eq 等于      -lt 小于      -ne 不等于      -gt 大于      -le 小于等于      -ge 大于等于 integer:整数      INTEGER1=63     INTEGER2=77     [ $INTEGER1 -eq $INTEGER2 ]

bash脚本编程之条件判断、条件测试

脚本编程: 编程面向过程有如下几种执行方式 顺序执行 选择执行:  如 if, case 循环执行:  如 for, while, until bash的变量类型: 本地变量 set VAR_NAME=value 设置变量赋值 如: set User=Centos unset VAR_NAME 撤消变量赋值 如: unset User=Centos ${VAR_NAME} 作用范围:当前shell进程: 局部变量 local VAR_NAME=value 设置变量赋值 unset VAR_NAM

谢烟客---------Linux之Bash基础特性条件测试&&自定义退出状态码(6)

条件测试 判断某需求是否满足,需要由测试机制来实现. 根据命令的执行状态结果,表达不同的测试条件 1.根据id命令的执行状态结果,判断用户是否存在 [[email protected] ~]# id root uid=0(root) gid=0(root) groups=0(root) [[email protected] ~]# echo $? 0 [[email protected] ~]# id help id: help: no such user [[email protected] 

bash脚本基础入门之条件测试

在运行bash命令的时候,无论成功还是失败都会返回为用户返回一个执行的结果,通常把他叫做退出状态码,每当我们运行命令的时候,退出状态码都会被记录在$?变量中,在命令行echo $?可以查看命令的执行结果,成功的值为0,失败的值为1-255之间的某个值. 注:在shell脚本中,退出状态码记录的是脚本最后一条命令,为方便检查脚本错误,可以使用exit #自定义退出状态码. shell结构化命令中,如if...then语句.while...do...done语句等的CONDITION条件都是以命令的

bash条件测试

占位:bash条件测试