標籤:
在使用shell的邏輯運算子”[]”使用時候,必須保證運算子與算數之間有空格。 四則運算也只能藉助:let,expr等命令完成。 今天講的雙括弧”(())”結構語句,就是對shell中算數及賦值運算的擴充。
1.文法:
((運算式1,運算式2…))
2.特點:
(1)在雙括弧結構中,所有運算式可以像c語言一樣,如:a++,b--等。
(2)在雙括弧結構中,所有變數可以不加入:“$”符號首碼。
(3)雙括弧可以進行邏輯運算,四則運算
(4)雙括弧結構 擴充了for,while,if條件測試運算
(5)支援多個運算式運算,各個運算式之間用“,”分開
3.使用執行個體:
3.1 擴充四則運算
代碼如下:
#!/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語言常用運算子都支援。如果雙括弧帶:$,將獲得運算式值,賦值給左邊變數。
3.2 擴充邏輯運算
代碼如下:
#!/bin/sh
a=1;
b="ab";
echo $((a>1?8:9));
((b!="a"))&& echo "err2";
((a<2))&& echo "ok";
運行結果:
9
err2
ok
3.3 擴充條件測試運算(if)
代碼如下:
a=1
b=2
if ((a<b));then
echo "true";
fi
if ((a>b));then
echo "false"
fi
運行結果:
true
3.4 擴充流程式控制制語句(邏輯關係式)
代碼如下:
#!/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
運算結果:
5050
5050
ok
有了雙括弧運算子:[[]],[],test 邏輯運算,let,expr就不是必須的了。
書寫優雅的shell指令碼(五)- shell中(())雙括弧運算子