操作符
赋值
变量赋值
初始化或者修改变量的值
=
通用赋值操作符, 可用于算术和字符串赋值.
var=12 catagory=minerals # 在“=”之后是不允许出现空白字符的.
算术操作符
+, -, *, /
加减乘除计算.
**
幂运算.
+=, -=, *=, /=, %=
"加-等于", "减-等于", "乘-等于", "除-等于", "取模-等于".
位操作符
<<, >>
"左移一位"(每次左移都相当于乘以2), "右移一位"(每次右移都相当于除以2).
<<=, >>=
"左移-赋值", "右移-赋值".
let "var <<= 2" # 变量var左移2位(就是乘以4)
&
按位与
&=
"按位与-赋值"
|
按位或
|=
"按位或-赋值"
~
按位反
!
按位非
^
按位异或XOR
^=
"按位异或-赋值"
逻辑操作符
&&
与(逻辑)
if [ $condition1 ] && [ $condition2 ] #与if [ $condition1 -a $condition2 ]相同 if [[ $condition1 && $condition2 ]] #也可以
||
或(逻辑)
,
逗号操作符
逗号操作符可以连接两个或多个算术运算. 所有的操作都会被运行(可能会有负作用), 但是只会返回最后操作的结果.
let "t1 = ((5+3, 7-1, 15-4))" echo "t1 = $t1" # t1 = 11 let "t2 = ((a = 9, 15/3))" echo "t2 = $t2 a=$a" # t2 = 5 a = 9
数字常量
shell脚本在默认情况下都是把数字作为10进制数来处理, 除非这个数字采用了特殊的标记或者前缀.如果数字以 0 开头的话那么就是 8进制 数. 如果数字以 0x 开头的话那么就是 16进制数. 如果数字中间嵌入了 # 的话, 那么就被认为是 BASE#NUMBER 形式的标记法(有范围和符号限制).
#!/bin/bash
# number.sh: 几种不同进制的数字表示法
# 10进制:默认情况
let "dec = 32"
echo "decimal number = $dec" # 32
# 8进制:以'0'开头
let "oct = 032"
echo "octal number = $oct" #26
#表达式结果是用10进制表示的
# 16进制:以‘0x'或者'0X'开头的数字
let "hex = 0x32"
echo "hexadecimal number = $hex" #50
#结果是用10进制表示的
let "bin = 2#111100111001101"
echo "binary number = $bin" #31181
let "b32 = 32#77"
echo "base-32 number = $b32" #231
echo $((36#zz)) $((2#10101010)) $((16#AF16)) $((53#1aA))
# 1295 170 44822 3375
#使用一个超出给定进制的数字的话,将会引起一个错误
exit 0