天天看點

shell位操作符

位操作符.

位操作符在shell腳本中極少使用。它們最主要的用途看起來就是操作和test從sockets中

讀出的變量."Bit flipping"與編譯語言的聯系很緊密,比如c/c++,在這種語言中它可以

運作得足夠快.(原文有處on the fly,我查了一下,好像是沒事幹的意思,沒了解)

<<        左移1位(每次左移都将乘2)

<<=        左移幾位,=号後邊将給出左移幾位

let "var <<= 2"就是左移2位(就是乘4)

>>        右移1位(每次右移都将除2)

>>=        右移幾位

&        按位與

&=        按位與指派

|        按位或

|=        按位或指派

~        按位非

!        按位否?(沒了解和上邊的~有什麼差別?),感覺是應該放到下邊的邏輯操作中

^        按位異或XOR

^=        異或指派

邏輯操作:

&&        邏輯與

1 if [ $condition1 ] && [ $condition2 ]

2 # 與:  if [ $condition1 -a $condition2 ] 相同

3 # 如果condition1和condition2都為true,那結果就為true.

5 if [[ $condition1 && $condition2 ]]    # 也可以.

6 # 注意&&不允許出現在[ ... ]中.

注意:&&也可以用在and list中(見25章),但是使用的時候需要依賴上下文.

||        邏輯或

1 if [ $condition1 ] || [ $condition2 ]

2 # 與:  if [ $condition1 -o $condition2 ] 相同

3 # 如果condition1或condition2為true,那結果就為true.

5 if [[ $condition1 || $condition2 ]]    # 也可以

6 # 注意||不允許出現在[ ... ]中.

注意:Bash将test每個連接配接到邏輯操作的狀态的退出狀态.

例:

if [ "$a" -eq 24 ] && [ "$b" -eq 47 ] 與if [ "$a" -eq 24 -a "$b" -eq 47 ]得到同一結果。

a=1

let "a=a|0x4"

echo $a

if [ $((a|0x4)) -eq 5 ];then

echo "ada"

fi

原文:

http://blog.csdn.net/zhrmghl/article/details/1346409