高级Bash编程指南__第二部分__基本__8.0 操作符与相关主题

8.0 操作符与相关主题
8.1 操作符
赋值
变量赋值

注意:
不要混淆"=" 赋值操作符与=测试操作符
if [ "x$string1" = "x$string2" ]
#这样做是一种更安全的做法,可以防止两个变量中的一个为空所产生的错误(字符"x"作为前缀在等式两边是可以相互抵消的)
then
command
fi

算术操作符:
+ - * / % **(幂运算)
+= -= *= /= %=

#幂运算
# let "z=5**3"
# echo $z
125

#取模运算
# expr 5 % 3
2
#

# : $((n = $n +1 )) #":"必须要加,否则Bash会将"$((n = $n +1 ))"解释为一个命令
# echo $n
1
#

# : $[ m++ ] #这种写法也可以
# echo $m
1

算数操作符经常会出现在expr或let表达式中

注意:
在Bash中整形变量事实上是一个有符号的long(32bit)整形值,所表示的范围是-2147483648到2147483647,超过这个范围,将会产生溢出。



位移操作符:

<< : 左移一位(每次左移都相当于乘以2)
<<= : 左移赋值 let "var <<= 2" (变量var左移2位,即乘以4)
>> : 右移
>>= : 右移赋值
& : 按位与
&= :
| :按位或
|= :
~ :按位反
! :按位非
^ : 按位异或
^= :

# let "b= 2+2"
# echo $b
4
# let "c= $b<<2"
# echo $c
16
[root


数字常量:
SHELL脚本默认情况下都是把数字作为10进制来处理的,除非这个数字采用了特殊的标记或前缀,如果数字以0开头的话那么就是8进制数,如果是以0x开头的话那么就是16进制,如果中间嵌入了#的话,那么就被认为是BASE#NUMBER的标记法(有范围和符号限制)

10进制:
# let "dec = 32"
# echo $dec
32


8进制:
# let "oct = 032"
# echo $oct
26

2进制:
# let "bin = 2#0101010101010"
# echo $bin
2730

32进制:
# let "b32 = 32#77"
# echo $b32
231

64进制:
# let "b64 = 64#@_"
# echo $b64
4031


BASE的范围在2到64之间;


@dianxinguangchang.43F.zhongshanerlu.yuexiuqu.guangzhoushi.guangdongsheng

2016-10-19 10:51
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值