❶ linux shell ) 雙括弧運算符使用
估計很多朋友都感覺比較難以接受。特變邏輯運算符」[]」使用時候,必須保證運算符與算數 之間有空格。 四則運算也只能藉助:let,expr等命令完成。 今天講的雙括弧」(())」結構語句,就是對shell中算數及賦值運算的擴展。
使用方法:
語法:
((表達式1,表達式2…))
特點:
1、在雙括弧結構中,所有表達式可以像c語言一樣,如:a++,b--等。
2、在雙括弧結構中,所有變數可以不加入:「$」符號前綴。
3、雙括弧可以進行邏輯運算,四則運算
4、雙括弧結構 擴展了for,while,if條件測試運算
5、支持多個表達式運算,各個表達式之間用「,」分開
使用實例:
擴展四則運算
復制代碼
代碼如下:
#!/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語言常用運算符都支持。如果雙括弧帶:$,將獲得表達式值,賦值給左邊變數。
擴展邏輯運算
復制代碼
代碼如下:
#!/bin/sh
a=1;
b="ab";
echo $((a1?8:9));
((b!="a")) echo "err2";
((a2)) echo "ok";
運行結果:
sh testsh.sh
9
err2
ok
擴展流程式控制制語句(邏輯關系式)
復制代碼
代碼如下:
#!/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 都可以拋到一邊了。
❷ linux shell:能從原理上給我講講為什麼要寫 ((a=$a+1))
a=3
假如不加兩個括弧,系統以為是字元串的形式,結果為
「3+1」,這個是字元串
加了兩個括弧,讓系統知道了裡面的值要進行運算,結果為
「4」
至於為什麼加一個括弧不行,是因為運算的格式就是要加兩個括弧
因為一個括弧的格式代表其他的作用
❸ shell中單中括弧和雙中括弧的區別
測試時,[ ]單中括弧與test語句作用一樣,雙中括弧可以支持更多的測試操作
用於正則表達式時,雙中括弧可以表示一類字元如[[:alpha:]]表示字母