手机版

Linux Shell 逻辑运算符与逻辑表达式详解

时间:2025-04-25   来源:未知    
字号:

详细罗列了在linux环境下,shell脚本中用到的逻辑运算符与逻辑表达式的详细说明,并半有示例

linux shell 逻辑运算符、逻辑表达式详解

一、 逻辑运算符

逻辑卷标

1.

-f

-d

-b

-c

-S

-L

-e

2.

-G

-O

-p

3.

-r

-w

-x

-s

-u

-g

-k

4.

-nt

-ot

-ef

5.

&&

|| 表示意思 关于档案与目录的侦测逻辑卷标! 常用!侦测『档案』是否存在 eg: if [ -f filename ] 常用!侦测『目录』是否存在 侦测是否为一个『 block 档案』 侦测是否为一个『 character 档案』 侦测是否为一个『 socket 标签档案』 侦测是否为一个『 symbolic link 的档案』 侦测『某个东西』是否存在! 关于程序的逻辑卷标! 侦测是否由 GID 所执行的程序所拥有 侦测是否由 UID 所执行的程序所拥有 侦测是否为程序间传送信息的 name pipe 或是 FIFO (老实说,这个不太懂!) 关于档案的属性侦测! 侦测是否为可读的属性 侦测是否为可以写入的属性 侦测是否为可执行的属性 侦测是否为『非空白档案』 侦测是否具有『 SUID 』的属性 侦测是否具有『 SGID 』的属性 侦测是否具有『 sticky bit 』的属性 两个档案之间的判断与比较;例如[ test file1 -nt file2 ] 第一个档案比第二个档案新 第一个档案比第二个档案旧 第一个档案与第二个档案为同一个档案( link 之类的档案) 逻辑的『和(and)』『或(or)』 逻辑的 AND 的意思 逻辑的 OR 的意思

详细罗列了在linux环境下,shell脚本中用到的逻辑运算符与逻辑表达式的详细说明,并半有示例

二、 逻辑表达式

test 命令

使用方法:test EXPRESSION

如:

[root@localhost ~]# test 1 = 1 && echo 'ok'

ok

[root@localhost ~]# test -d /etc/ && echo 'ok'

ok

[root@localhost ~]# test 1 -eq 1 && echo 'ok'

ok

[root@localhost ~]# if test 1 = 1 ; then echo 'ok'; fi

ok

注意:所有字符与逻辑运算符直接用“空格”分开,不能连到一起。

精简表达式

使用方法:[] 表达式

如:

[root@localhost ~]# [ 1 -eq 1 ] && echo 'ok'

ok

[root@localhost ~]# [ 2 < 1 ] && echo 'ok'

详细罗列了在linux环境下,shell脚本中用到的逻辑运算符与逻辑表达式的详细说明,并半有示例

-bash: 2: No such file or directory

[root@localhost ~]# [ 2 \< 1 ] && echo 'ok'

[root@localhost ~]# [ 2 -gt 1 -a 3 -lt 4 ] && echo 'ok'

ok

[root@localhost ~]# [ 2 -gt 1 && 3 -lt 4 ] && echo 'ok'

-bash: [: missing `]'

注意:在[] 表达式中,常见的>,<需要加转义字符,表示字符串大小比较,以acill码位置作为比较。不直接支持<>运算符,还有逻辑运算符|| &&它需要用-a[and] –o[or]表示

使用方法:[[]] 表达式

如:

[root@localhost ~]# [ 1 -eq 1 ] && echo 'ok'

ok

[root@localhost ~]$ [[ 2 < 3 ]] && echo 'ok'

ok

[root@localhost ~]$ [[ 2 < 3 && 4 > 5 ]] && echo 'ok'

ok

注意:[[]] 运算符只是[]运算符的扩充。能够支持<,>符号运算不需要转义符,它还是以字符串比较大小。里面支持逻辑运算符:|| &&

三、 性能比较

bash的条件表达式中有三个几乎等效的符号和命令:test,[]和[[]]。通常,大家习惯用if [];then这样的形式。而[[]]的出现,根据ABS所说,是为了兼容><之类的运算符。以下是比较它们性能,发现[[]]是最快的。

$ time (for m in {1..100000}; do test -d .;done;)

real 0m0.658s

user 0m0.558s

sys 0m0.100s

$ time (for m in {1..100000}; do [ -d . ];done;)

real 0m0.609s

user 0m0.524s

sys 0m0.085s

$ time (for m in {1..100000}; do [[ -d . ]];done;)

real 0m0.311s

user 0m0.275s

sys 0m0.036s

…… 此处隐藏:74字,全部文档内容请下载后查看。喜欢就下载吧 ……
Linux Shell 逻辑运算符与逻辑表达式详解.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
    ×
    二维码
    × 游客快捷下载通道(下载后可以自由复制和排版)
    VIP包月下载
    特价:29 元/月 原价:99元
    低至 0.3 元/份 每月下载150
    全站内容免费自由复制
    VIP包月下载
    特价:29 元/月 原价:99元
    低至 0.3 元/份 每月下载150
    全站内容免费自由复制
    注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
    × 常见问题(客服时间:周一到周五 9:30-18:00)