shell学习之条件判断、多重条件判断
程序员文章站
2023-12-24 22:21:21
...
一、条件判断语句
1.条件判断语法格式:
- 格式1: test 表达式
- 格式2: [ 条件表达式 ]
- 格式3:[[ 条件表达式 ]] 支持正则
注意:条件表达式与中括号之间有空格
man test查看, 很多参数都可以用来进行条件判断
- 格式1:
echo $?为0,代表上一条命令为真,echo $?为1,代表上一条明林为假
- 格式2:
- 格式3:
2.条件判断相关参数
【1】文件类型判断
-e | 判断文件是否存在(任何类型文件) |
---|---|
-f | 判断文件是否存在并且是一个普通文件 |
-d | 判断文件是否存在并且是一个目录 |
-L | 判断文件是否是一个软链接文件 |
-b | 判断文件是否存在并且是一个块设备文件 |
-S | 判断文件是否存在并且是一个套接字文件 |
-c | 判断文件是否存在并且是一个字符文件 |
-p | 判断文件是否存在并且是一个命名管道文件 |
-s | 判断文件是否存在并且是一个非空文件 |
文件类型判断
[ -f file1 ];echo $? # 判断file1是否为普通文件
[ -d file1 ];echo $? # 判断file是否为目录
[-L file3 ];echo $? # 判断file3是否为软链接
[ ! -d dir1 ];echo $? # 判断dir1是否不是目录
[[ -f file1 ]];echo $? # 判断file1是否为普通文件
[ -e file1 ];echo $? # 判断file1是否存在
- 判断文件是否存在(任何类型文件)
- 判断文件是否存在并且是一个普通文件
- 判断文件是否存在并且是一个目录
- 判断文件是否存在并且是一个软链接文件:
当file1删除时,file4依然是一个软连接文件:
但此时file4不存在:
注意:判断软连接时,如果原文件不存在,-L并不能检测出。故需要先用-e判断文件是否有效(存在),随后再用-L判断此文件是否为一个软连接
【2】:文件权限判断
-r | 当前用户对其是否有读权限 |
---|---|
-w | 当前用户对其是否有写权限 |
-x | 当前用户对其是否有执行权限 |
-u | 当前用户对其是否有suid特殊权限(高级权限冒险位) |
-g | 当前用户对其是否有guid特殊权限(高级权限强制位) |
-k | 当前用户对其是否有o+t特殊权限(高级权限粘滞位) |
- 当前用户对其是否有读权限
- 当前用户对其是否有写权限
- 当前用户对其是否有执行权限
- 当前用户对其是否有suid特殊权限(高级权限冒险位)
- 当前用户对其是否有o+t特殊权限(高级权限粘滞位)
注意:/tmp目录是linux系统中使用o+t权限的目录:
注意:/usr/bin/passwd是linux系统中使用u+s权限的文件:
【3】文件新旧判断
file1 -nt file2 | 比较file1是否比file2新 |
---|---|
file1 -ot file2 | 比较file1是否比file2旧 |
file1 -ef file2 | 比较是否为同一个文件,或者用于判断硬连接,是否指向同一个inode |
注意:这里的新旧指的是文件的修改时间。
【4】判断整数
-eq | 相等 |
---|---|
-ne | 不相等 |
-gt | 大于 |
-ge | 大于等于 |
-lt | 小于 |
-le | 小于等于 |
注意: 反响单引号 `` ,代表获取命令的执行结果
【5】判断字符串
-z | 判断是否为空字符串,字符串长度位0 |
---|---|
-n | 判断是否为非空字符串,字符串长度大于0 |
string1 = string2 | 判断字符串是否相等 |
string1 != string2 | 判断字符串是否不相等 |
重点:shell编程中,判断字符转书否相等,=和==均可。
3.多重条件判断
【1】-a 和 && 逻辑与,全真则真
举例:[ -f /etc/passswd -a -f /etc/group]
[ -f /etc/passwd ] && [ -f /etc/group ]
【2】-o 和 || 逻辑或,全假则假
举例:[ -f /etc/passswd -o -f /etc/group ]
[ -f /etc/passwd ] || [ -f /etc/group ]
注意:&& 前面的表达式为真,才会执行后面的代码, || 前面的表达式为假,才会执行后面的代码
推荐阅读
-
shell学习之条件判断、多重条件判断
-
.Net程序员之Python基础教程学习----判断条件与循环[Fourth Day]
-
Linux shell脚本编程if语句的使用方法(条件判断)
-
Shell脚本IF条件判断和判断条件总结
-
Linux_shell条件判断if中的-a到-z的意思
-
Linux shell脚本编程if语句的使用方法(条件判断)
-
Python中的条件判断语句基础学习教程
-
.Net程序员之Python基础教程学习----判断条件与循环[Fourth Day]
-
Python基础总结之第五天开始【认识简单的条件语句,也可以叫判断语句】(新手可相互督促)
-
荐 php基础教程 第六步 学习数组以及条件判断switch补充