linux shell “(())” 雙括號運算符使用

 

http://www.cnblogs.com/chengmo/archive/2010/10/19/1855577.html

在剛開始學習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
10
#!/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 都可以拋到一邊了。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章