第 8 章 操作符和相关的主题
8.1 操作符
等号操作符
变量赋值 初始化或者修改变量的值
= 无论在算术运算还是字符串运算中,都是赋值语句.
算术操作符
+ 加法
- 减法
* 乘法
/ 除法
** 幂运算
% 取模
+= 加等于(通过常量增加变量)
let "var += 5"
-= 减等于
*= 乘等于
let "var *= 4"
/= 除等于
%= 取模赋值,算术操作经常使用 expr 或者 let 表达式.
位操作符
位操作符在 shell 脚本中极少使用.它们最主要的用途看起来就是操作和 test 从 sockets 中读出的变量."Bit flipping"与编译语言的联系很紧密,比如 c/c++,在这种语言中它可以运行得足够快.
<< 左移 1 位(每次左移都将乘 2)
<<= 左移几位,=号后边将给出左移几位
let "var <<= 2"就是左移 2 位(就是乘 4)
>> 右移 1 位(每次右移都将除 2)
>>= 右移几位
& 按位与
&= 按位与赋值
| 按位或
|= 按位或赋值
~ 按位非
! 按位否
逻辑操作:
&& 逻辑与
混杂操作:
, 逗号操作符,逗号操作符可以连接 2 个或多个算术运算.所有的操作都会被执行,但是只有最后一个操作作为结果.
let "t1 = ((5 + 3, 7 - 1, 15 - 4))" #t1=11
8.2 数字常量
shell 脚本默认都是将数字作为 10 进制数处理,除非这个数字某种特殊的标记法或前缀开头.以 0 开头就是 8 进制.以 0x 开头就是 16 进制数.使用 BASE#NUMBER 这种形式可以表示其它进制表示法
8.1 操作符
等号操作符
变量赋值 初始化或者修改变量的值
= 无论在算术运算还是字符串运算中,都是赋值语句.
算术操作符
+ 加法
- 减法
* 乘法
/ 除法
** 幂运算
% 取模
+= 加等于(通过常量增加变量)
let "var += 5"
-= 减等于
*= 乘等于
let "var *= 4"
/= 除等于
%= 取模赋值,算术操作经常使用 expr 或者 let 表达式.
位操作符
位操作符在 shell 脚本中极少使用.它们最主要的用途看起来就是操作和 test 从 sockets 中读出的变量."Bit flipping"与编译语言的联系很紧密,比如 c/c++,在这种语言中它可以运行得足够快.
<< 左移 1 位(每次左移都将乘 2)
<<= 左移几位,=号后边将给出左移几位
let "var <<= 2"就是左移 2 位(就是乘 4)
>> 右移 1 位(每次右移都将除 2)
>>= 右移几位
& 按位与
&= 按位与赋值
| 按位或
|= 按位或赋值
~ 按位非
! 按位否
逻辑操作:
&& 逻辑与
混杂操作:
, 逗号操作符,逗号操作符可以连接 2 个或多个算术运算.所有的操作都会被执行,但是只有最后一个操作作为结果.
let "t1 = ((5 + 3, 7 - 1, 15 - 4))" #t1=11
8.2 数字常量
shell 脚本默认都是将数字作为 10 进制数处理,除非这个数字某种特殊的标记法或前缀开头.以 0 开头就是 8 进制.以 0x 开头就是 16 进制数.使用 BASE#NUMBER 这种形式可以表示其它进制表示法