前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >八、条件表达式

八、条件表达式

原创
作者头像
jackxiao
发布2021-11-16 15:34:19
3780
发布2021-11-16 15:34:19
举报
文章被收录于专栏:DevOps运维

1.语法介绍

表达式

说明

test 表达式

test命令进行条件测试

[ 表达式 ]

单中括号方式,功能同test命令,推荐

[[ 表达式 ]]

双中括号,前两种的升级版

((表达式))

双小括号,一般用于if语句

双中括号可以使用通配符 &&、||、<、>等可以用于双中括号,不能用于单中括号 单中括号中用-a、-o、-gt、-lt代替 整数的关系运算也可以用双小括号 中括号里表达式前后都需要有空格

2.用法和小结

1) 普通用法

代码语言:javascript
复制
test -f /etc/passwd && echo 1 || echo 0
[ -f /etc/passwd ] && echo 1 || echo 0    
[[ -f /etc/passwd ]] && echo 1 || echo 0 
((3>2)) && echo 1 || echo 0 

可以只写一半的条件语句,例如只写为真、为假时怎么操作

代码语言:javascript
复制
test -f /etc/passwd && echo 1
test -f /etc/passwd || echo 0

2) 扩展用法

如果需要执行的命令有多条,可以用下面的扩展语法

代码语言:javascript
复制
[ 条件1 ]  &&{
  命令1
  命令2
  命令3
}

二、文件测试操作符

1. 文件操作符介绍

操作符

操作符说明

-d

文件存在且为目录

-f

文件存在且为普通文件

-e

文件存在,不管是什么文件类型

-r

文件存在且可读

-w

文件存在且可写

-x

文件存在且可执行

-s

文件存在且大小不为0

-L

文件存在且为链接文件

f1 -nt -f2

前面的文件比后面的文件新

f1 -ot -f2

前面的文件比后面的文件旧

以上文件操作符对[]、[[]]、test三者通用 读写执行权限并不全看文件属性,而是要结合实际用户,如root在没有读写权限时也能读写

2. 应用举例

代码语言:javascript
复制
[ -f /etc/passwd ] && echo 1||echo 0
[ -d /etc/passwd ] && echo 1||echo 0
[ -e /etc/passwd ] && echo 1||echo 0
[ -r /etc/passwd ] && echo 1||echo 0
[ -x /etc/passwd ] && echo 1||echo 0
[ -w /etc/passwd ] && echo 1||echo 0
[ -L /etc/passwd ] && echo 1||echo 0

三、字符串测试操作符

1. 操作符介绍

操作符

操作符说明

-n "字符串"

若字符串长度不为0则表达式成立

-z "字符串"

若字符串长度为0则表达式成立

"串1" = "串2"

若字符串1等于字符串2则表达式成立

"串1" != "串2"

若字符串1不等于字符串2则表达式成立

对字符串的测试一定要将字符串加双引号后再比较 比较符号(如=和!=)两端一定要有空格

2. 简单案例演示

代码语言:javascript
复制
[ -n "" ] && echo 1 || echo 0       
[ -z "" ] && echo 1 || echo 0 
[ "abc" = "abc" ] && echo 1 || echo 0       
[ "abc" != "abc" ] && echo 1 || echo 0

四、整数比较操作符和逻辑操作符

1. 操作符介绍

[]和test中

(())和[[]]中

说明

-eq

==或=

等于 (equal)

-ne

!=

不等于 (not equal)

-gt

>

大于 (greater than)

-ge

>=

大于等于 (greater equal)

-lt

<

小于 (less than)

-le

<=

小于等于 (less equal)

=和!=也可以在[]中做比较实用,但是需要转义 -gt和-lt也能在[[]]中使用,但不建议 比较符号两端也要有空格

2. 逻辑操作符介绍

[]和test中

(())和[[]]中

说明

-a

&&

and,与

-o

||

or,或

!

!

not,非

> 连接两个[]或[[]]的表达式可以用&&或||

-a和&&,需要两端为真才为真 -o和||,只需要任意一段为真就为真`

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.语法介绍
  • 2.用法和小结
    • 1) 普通用法
      • 2) 扩展用法
      • 二、文件测试操作符
        • 1. 文件操作符介绍
          • 2. 应用举例
          • 三、字符串测试操作符
            • 1. 操作符介绍
              • 2. 简单案例演示
              • 四、整数比较操作符和逻辑操作符
                • 1. 操作符介绍
                  • 2. 逻辑操作符介绍
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档