linux 关系运算符,Linux 各种运算符

- 算术运算符

算术运算符,常用的有+、-、*、/、%、++、--、**

+ - 加法运算符

[[email protected] ~]$ expr 1 + 1

2

[[email protected] ~]$ echo $(( 1 + 1 ))

2

- - 减法运算符

[[email protected] ~]$ expr 1 - 1

0

[[email protected] ~]$ echo $(( 1 - 1 ))

0

* - 乘法运算符

[[email protected] ~]$ expr 2 \* 2

4

[[email protected] ~]$ echo $(( 2 * 2 ))

/ - 除法运算符

[[email protected] ~]$ expr 2 \/ 2

1

[[email protected] ~]$ echo $(( 2 / 2 ))

1

% - 取余运算符

[[email protected] ~]$ expr 2 % 2

0

[[email protected] ~]$ echo $(( 10 % 2 ))

0

** - 幂运算符

[[email protected] ~]$ echo $(( 2 ** 4 ))

16

++ - 增加运算符

[[email protected] ~]$ variable=0

[[email protected] ~]$ (( variable++ ))

[[email protected] ~]$ echo $variable

1

#-------------------------------------

[[email protected] ~]$ variable=0

[[email protected] ~]$ let variable++

[[email protected] ~]$ echo $variable

1

-- - 减少运算符

[[email protected] ~]$ variable=100

[[email protected] ~]$ (( variable-- ))

[[email protected] ~]$ echo $variable

99

#------------------------------------

[[email protected] ~]$ variable=100

[[email protected] ~]$ let variable--

[[email protected] ~]$ echo $variable

99

- 关系运算符

关系运算符,常用的有、>=、=、==、!=

< - 小于运算符

[[email protected] ~]$ echo $(( 1 < 2 ))

1 # 返回值为0表示(false),返回值为1表示(true)

[[email protected] ~]$ (( 1 < 2 ));echo $?

0 # 返回值为0表示(tree),返回值为1表示(false)

[[email protected] ~]$ [[ 1 < 2 ]];echo $?

0 # 返回值为0表示(true),返回值为1表示(false)

<= - 小于或等于运算符

[[email protected] ~]$ echo $(( 1 <= 2 ))

1 # 返回值为0表示(false),返回值为1表示(true)

[[email protected] ~]$ (( 1 < 2 ));echo $?

0 # 返回值为0表示(tree),返回值为1表示(false)

> - 大于运算符

[[email protected] ~]$ echo $((1 > 2))

1 # 返回值为0表示(false),返回值为1表示(true)

[[email protected] ~]$ ((1 > 2));echo $?

0 # 返回值为0表示(tree),返回值为1表示(false)

[[email protected] ~]$ [[ 1 > 2 ]];echo $?

0 # 返回值为0表示(true),返回值为1表示(false)

>= - 大于或等于运算符

[[email protected] ~]$ echo $((1 >= 2))

1 # 返回值为0表示(false),返回值为1表示(true)

[[email protected] ~]$ ((1 >= 2));echo $?

0 # 返回值为0表示(tree),返回值为1表示(false)

= - 等于运算符

[[email protected] ~]$ [ "word" = "word" ];echo $?

# 该行为是进行字符串比较

[[email protected] ~]$ [[ "word" = "word" ]];echo $?

# 该行为是进行字符串比较

== - 等于运算符

[[email protected] ~]$ expr 1 == 1

1 # 返回值为0表示(false),返回值为1表示(true)

[[email protected] ~]$ echo $((1 == 1))

1 # 返回值为0表示(false),返回值为1表示(true)

[[email protected] ~]$ ((1 == 1));echo $?

0 # 返回值为0表示(true),返回值为1表示(false)

[[email protected] ~]$ [[ 1 == 1 ]];echo $?

0 # 返回值为0表示(true),返回值为1表示(false)

!= - 不等于运算符

[[email protected] ~]$ expr 1 != 1

0 # 返回值为0表示(false),返回值为1表示(true)

[[email protected] ~]$ echo $((1 != 1))

0 # 返回值为0表示(false),返回值为1表示(true)

[[email protected] ~]$ ((1 != 1));echo $?

1 # 返回值为0表示(true),返回值为1表示(false)

[[email protected] ~]$ [[ 1 != 1 ]];echo $?

1 # 返回值为0表示(true),返回值为1表示(false)

- 逻辑运算符

逻辑运算符,常用的有&&、||、!

&& - 逻辑与运算符

[[email protected] ~]$ make && make install

# 只有当make命令成功执行时,才会执行后面的语句

[[email protected] ~]$ [ -f /etc/passwd -a -d /etc ];echo $?

# -a 等同于 &&

|| - 逻辑或运算符

[[email protected] ~]$ make || echo "Make failed !"

# 当make执行失败时,才会执行后面的语句

[[email protected] ~]$ [ -f /etc/passwd -o -d /etc];echo $?

# -o 等同于 ||

! - 逻辑非运算符

[[email protected] ~]$ [ 1 -eq 1 ];echo $?

0

[[email protected] ~]$ [ ! 1 -eq 1 ];echo $?

1

# !真 = 假 , !假 = 真

# 也就是将结果取反,如果表达式为0则返回1,为1则返回0、

- 按位运算符

按位运算符,常用的有&、|、^、~、<>、

& - 按位与运算符

[[email protected] ~]$ echo $((0 & 0))

0

[[email protected] ~]$ echo $((0 & 1))

0

[[email protected] ~]$ echo $((1 & 0))

0

[[email protected] ~]$ echo $((1 & 1))

1

# 由此得出,只有当两边的值都为true时,结果才为true

| - 按位或运算符

[[email protected] ~]$ echo $(( 0 | 0 ))

0

[[email protected] ~]$ echo $(( 0 | 1 ))

1

[[email protected] ~]$ echo $(( 1 | 0 ))

1

[[email protected] ~]$ echo $(( 1 | 1 ))

1

# 由此得出,只要有一个值为true,则结果为true

^ - 异或运算符

[[email protected] ~]$ echo $(( 0 ^ 0 ))

0

[[email protected] ~]$ echo $(( 0 ^ 1 ))

1

[[email protected] ~]$ echo $(( 1 ^ 0 ))

1

[[email protected] ~]$ echo $(( 1 ^ 1 ))

0

#-----------------------------------------------

# 异或是运算二进制,两个值进行运算,同号为0,异号为1,例如:

[[email protected] ~]$ echo $((99^88)) # 开始运算,异或后为59,为什么?

59

# 这里为运算的过程,99和88进行异或,如果两个都是一样的就是0,不一样就是1

[[email protected] ~]$ echo "obase=2;ibase=10;99"|bc # 得出99的二进制

1011000

[[email protected] ~]$ echo "obase=2;ibase=10;88"|bc # 得出88的二进制

1100011

# 99 = 1011000

# 88 = 1100011

# 59 = 0111011 # 此处为上面两个二进制运算后的结果,

[[email protected] ~]$ echo "obase=10;ibase=2;0111011"|bc

59

# 最终结果是正确的,常用于互换两个变量的值,但该值一定是整数

~ - 取反运算符

[[email protected] ~]$ echo $(( ~9 ))

<< - 左移运算符

[[email protected] ~]$ echo $((1<<2))

>> - 右移运算符

[[email protected] ~]$ echo $((2>>1))

- 文件测试符

文件测试有很多,如下:

-z - 检测字符长度为0,则返回true

-eq - 等于

-ge - 大于等于

-gt - 大于

-le - 小于等于

-lt - 小于

-ne - 不等于

-ef - 判断 file1 和 file2 是否具有相同的设备和inode编号

-nt - 判断 file和 file2 哪一个文件比较新

-ot - 判断 file和 file2 哪一个文件比较旧

-b - 判断文件是否存在,并且是块设备文件

-c - 判断文件是否存在,并且是字符设备文件

-d - 判断文件是否存在,并且是目录

-e - 判断文件是否存在

-f - 判断文件是否存在,并且是普通文件

-g - 判断文件是否存在,并且设置了SGID位

-G - 判断文件是否存在,并且GID有效

-h - 判断文件是否存在,并且是一个符号链接(与-L相同)

-k - 判断文件是否存在,并且设置了粘着位

-L - 判断文件是否存在,并且是一个符号链接(与-h相同)

-O - 判断文件是否存在,并且UID有效

-p - 检测文件是否存在,并且具备命名管道

-r - 判断文件是否存在,并且具备读权限

-s - 判断文件是否存在,并且大小大于0

-S - 判断文件是否存在,并且是一个套接字

-t - 文件描述符是在一个终端打开的

-u - 判断文件是否存在,并且设置了SUID位

-w - 判断文件是否存在,并且具备写权限

-x - 判断文件是否存在,并且具备执行权限

原文:https://www.cnblogs.com/liuhedong/p/10356155.html

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值