关于Shell脚本中条件表达式

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于Shell脚本中条件表达式相关的知识,希望对你有一定的参考价值。

一、文件操作
1、表达式
-d:是否为目录
-f:是否为文件
-e:文件或目录是否存在
-r:当前用户是否有读权限
-w:当前用户是否写权限
-x:当前用户是否有可执行权限

2、举例说明(在命令行使用test命令或[])

[[email protected] ~]# test -d /home/oldcat/tools/
[[email protected] ~]# echo $?
0
[[email protected] ~]# test -d /home/oldcat/tools/redis-3.0.7.tar.gz 
[[email protected] ~]# echo $?
1
[[email protected] ~]# test -f /home/oldcat/tools/redis-3.0.7.tar.gz 
[[email protected] ~]# echo $?
0
说明:输出执行结果为0表示真,反之为假

二、数值比较
1、表达式

-eq:两个操作数是否相等
-ne:两个操作数是否不相等
-le:左操作数是否小于或等于右操作数
-ge:左操作数是否大于或等于右操作数
-lt:左操作数是否小于右操作数
-gt:左操作数是否大于右操作数

2、举例说明

[[email protected] ~]# test 1 -eq 2
[[email protected] ~]# echo $?
1
[[email protected] ~]# test 1 -eq 1
[[email protected] ~]# echo $?
0
[[email protected] ~]# test 2 -gt 1
[[email protected] ~]# echo $?
0
[[email protected] ~]# test 1 -ge 1
[[email protected] ~]# echo $?
0
说明:输出执行结果为0表示真,反之为假

三、字符串比较

1、表达式
=:两个字符串是否相等
!=:两个字段串是否不相等
-z:判断字段串是否为空

2、举例说明

[[email protected] ~]# test "chenfl" = "chenfL"
[[email protected] ~]# echo $?
1
[[email protected] ~]# test "chenfl" != "chenfl"
[[email protected] ~]# echo $?
1
[[email protected] ~]# test "chenfl" = "chenfl"
[[email protected] ~]# echo $?
0
[[email protected] ~]# test -z ""
[[email protected] ~]# echo $?
0
[[email protected] ~]# test -z "chenfl"
[[email protected] ~]# echo $?
1
说明:输出执行结果为0表示真,反之为假

四、逻辑判断
1、表达式
&&:逻辑与,只有前后两个表达式都为真执行结果才为真(0),否则为假(1)
||:逻辑或,前后两个表达式只要有一个为真,执行结果为真(0),否则为假(1)
!:逻辑非,如果表达式的执行结果为真则为假(1),如果表达式的执行结果为假即为真(0)

2、举例说明

[[email protected] ~]# [ 1 -eq 1 ] && [ "hehe" != "hehe" ]
[[email protected] ~]# echo $?
1
[[email protected] ~]# [ 1 -eq 1 ] || [ "hehe" != "hehe" ]
[[email protected] ~]# echo $?
0
[[email protected] ~]# [ ! -d /home/oldcat/tools/ ]
[[email protected] ~]# echo $?
1
说明:输出执行结果为0表示真,反之为假

      





以上是关于关于Shell脚本中条件表达式的主要内容,如果未能解决你的问题,请参考以下文章

shell中条件测试常用的语法

打印与日志文件中条件匹配的数据

Shell脚本的条件测试与比较

shell中条件判断if中的-z到-d

shell中条件判断文件, 判断数值, 判断字符; 逻辑比较, test的使用

Shell中条件判断语法与判断条件