在剛開始學習inux shell指令碼程式設計時候,對於它的 四則運算以及邏輯運算,估計很多朋友都感覺比較難以接受。特變邏輯運算子”[]”使用時候,必須保證運算子與算數 之間有空格。 四則運算也只能藉助:let,expr等命令完成。 今天講的雙括號”(())”結構語句,就是對shell中算數及賦值運算的擴充套件。
使用方法:
語法:
((表示式1,表示式2…))
特點:
1、在雙括號結構中,所有表示式可以像c語言一樣,如:a++,b–等。
2、在雙括號結構中,所有變數可以不加入:“$”符號字首。
3、雙括號可以進行邏輯運算,四則運算
4、雙括號結構 擴充套件了for,while,if條件測試運算
5、支援多個表示式運算,各個表示式之間用“,”分開
使用例項:
- 擴充套件四則運算
1 2 3 4 5 6 7 8 9 10 11 |
#!/bin/sh a=1; b=2; c=3; ((a=a+1)); echo $a; a=$((a+1,b++,c++)); echo $a,$b,$c |
執行結果:
sh testsh.sh
2
3,3,4
雙括號結構之間支援多個表示式,然後加減乘除等c語言常用運算子都支援。如果雙括號帶:$,將獲得表示式值,賦值給左邊變數。
- 擴充套件邏輯運算
1 2 3 4 5 6 7 8 9 |
#!/bin/sh a=1; b="ab"; echo $((a>1?8:9)); ((b!="a"))&& echo "err2"; ((a<2))&& echo "ok"; |
執行結果:
sh testsh.sh
9
err2
ok
- 擴充套件流程控制語句(邏輯關係式)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
#!/bin/sh num=100; total=0; for((i=0;i<=num;i++)); do ((total+=i)); done echo $total; total=0; i=0; while((i<=num)); do ((total+=i,i++)); done echo $total; if((total>=5050));then echo "ok"; fi |
運算結果:
sh testsh.sh
5050
5050
ok
有了雙括號運算子:[[]],[],test 邏輯運算,已經let,expr 都可以拋到一邊了。