一起学Bash脚本:进制、位运算、逻辑运算

使用“进制+#+数字”来表示特殊进制:

[~]$ echo $((16#FF))
255
[~]$ echo $((2#11))
3
[~]$ echo $((8#11))
9

也可以使用0或0x表示八进制或十六进制数:

[~]$ echo $((011))
9
[~]$ echo $((0x11))
17 

支持以下位运算:

  • <<:位左移运算,把一个数字的所有位向左移动指定的位。

[~]$ echo $((16<<2))
64

  • >>:位右移运算,把一个数字的所有位向右移动指定的位。

[~]$ echo $((16>>2))
4

  • &:位的“与”运算,对两个数字的所有位执行一个AND操作。

[~]$ echo $((17&3))
1

  • |:位的“或”运算,对两个数字的所有位执行一个OR操作。

[~]$ echo $((17|3))
19

  • ~:位的“否”运算,对一个数字的所有位取反。

[~]$ echo $((~17))
-18

  • !:逻辑“否”运算
  • ^:位的异或运算(exclusive or),对两个数字的所有位执行一个异或操作。

 [~]$ echo $((17^3))
18

支持以下逻辑运算,真为1,假为0:

  • <:小于

[~]$ echo $((1<0))
0

  • >:大于

[~]$ echo $((1>0))
1

  • <=:小于或相等

[~]$ echo $((1<=0))
0

  • >=:大于或相等

[~]$ echo $((1>=0))
1

  • ==:相等

[~]$ echo $((1==0))
0

  • !=:不相等

[~]$ echo $((1!=0))
1

  • &&:逻辑与

[~]$ echo $((1>0 && 2>0))
1

  • ||:逻辑或

[~]$ echo $((1>0 || 2<0))
1

  • expr1?expr2:expr3:三元条件运算符。若表达式expr1的计算结果为非零值(算术真),则执行表达式expr2,否则执行表达式expr3

 [~]$ echo $((1>0?2:3))
2

基本的赋值操作:

  • parameter = value:简单赋值。

[~]$ echo $((a=1))
1
[~]$ echo $a
1

  • parameter += value:等价于parameter = parameter + value

[~]$ echo $((a+=1))
2
[~]$ echo $a
2

  • parameter -= value:等价于parameter = parameter – value

[~]$ echo $((a-=1))
1
[~]$ echo $a
1

  • parameter *= value:等价于parameter = parameter * value

[~]$ echo $((a*=2))
2
[~]$ echo $a
2

  • parameter /= value:等价于parameter = parameter / value

[~]$ echo $((a/=2))
1
[~]$ echo $a
1

  • parameter %= value:等价于parameter = parameter % value

[~]$ a=3
[~]$ echo $((a%=2))
1
[~]$ echo $a
1

  • parameter <<= value:等价于parameter = parameter << value

[~]$ echo $((a<<=2))
4
[~]$ echo $a
4

  • parameter >>= value:等价于parameter = parameter >> value

[~]$ echo $((a>>=2))
1
[~]$ echo $a
1

  • parameter &= value:等价于parameter = parameter & value

[~]$ echo $((a&=2))
0
[~]$ echo $a
0

  • parameter |= value:等价于parameter = parameter | value

[~]$ echo $((a|=2))
2
[~]$ echo $a
2

  • parameter ^= value:等价于parameter = parameter ^ value

[~]$ echo $((a^=2))
0
[~]$ echo $a
0

逗号表达式

[~]$ echo $((foo = 1 + 2, 3 * 4))
12
[~]$ echo $foo

也可以使用expr命令,不需要使用(()),注意空格

 [~]$ expr $foo + 3
6

[~]$ expr 3 + 2
5

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值