估計很多朋友都感覺比較難以接受。特變邏輯運算符”[]”使用時候,必須保證運算符與算數(shù) 之間有空格。 四則運算也只能借助:let,expr等命令完成。 今天講的雙括號”(())”結(jié)構(gòu)語句,就是對shell中算數(shù)及賦值運算的擴展。
使用方法:
語法:
((表達式1,表達式2…))
特點:
1、在雙括號結(jié)構(gòu)中,所有表達式可以像c語言一樣,如:a++,b--等。
2、在雙括號結(jié)構(gòu)中,所有變量可以不加入:“$”符號前綴。
3、雙括號可以進行邏輯運算,四則運算
4、雙括號結(jié)構(gòu) 擴展了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
運行結(jié)果:
sh testsh.sh
2
3,3,4
雙括號結(jié)構(gòu)之間支持多個表達式,然后加減乘除等c語言常用運算符都支持。如果雙括號帶:$,將獲得表達式值,賦值給左邊變量。
擴展邏輯運算
#!/bin/sh
a=1;
b="ab";
echo $((a>1?8:9));
((b!="a")) echo "err2";
((a2)) echo "ok";
運行結(jié)果:
sh testsh.sh
9
err2
ok
擴展流程控制語句(邏輯關(guān)系式)
#!/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
運算結(jié)果:
sh testsh.sh
5050
5050
ok
有了雙括號運算符:[[]],[],test 邏輯運算,已經(jīng)let,expr 都可以拋到一邊了。