10.Shell操作符
Bash 支持很多運(yùn)算符,包括算數(shù)運(yùn)算符、關(guān)系運(yùn)算符、布爾運(yùn)算符、字符串運(yùn)算符和文件測(cè)試運(yùn)算符。
原生bash不支持簡(jiǎn)單的數(shù)學(xué)運(yùn)算,但是可以通過(guò)其他命令來(lái)實(shí)現(xiàn),例如 awk 和 expr,expr 最常用。
expr 是一款表達(dá)式計(jì)算工具,使用它能完成表達(dá)式的求值操作。
例如,兩個(gè)數(shù)相加:
#!/bin/bash
caoliu=`expr 2 + 2`
echo $caoliu
兩點(diǎn)注意:
表達(dá)式和運(yùn)算符之間要有空格,例如 2+2 是不對(duì)的,必須寫成 2 + 2,這與我們熟悉的大多數(shù)編程語(yǔ)言不一樣。
完整的表達(dá)式要被 ` ` 包含,注意這個(gè)字符不是常用的單引號(hào),在 Esc 鍵下邊。
算術(shù)運(yùn)算符
先來(lái)看一個(gè)使用算術(shù)運(yùn)算符的例子:
#!/bin/sh a=10 b=20 val=`expr?$a?+?$b` echo?"a?+?b?:?$val"val=`expr?$a?-?$b` echo?"a?-?b?:?$val"val=`expr?$a?\*?$b` echo?"a?*?b?:?$val"val=`expr?$b?/?$a` echo?"b?/?a?:?$val"val=`expr?$b?%?$a` echo?"b?%?a?:?$val"if?[?$a?==?$b?] thenecho?"a等于b" fiif?[?$a?!=?$b?] thenecho?"a不等于b" fi結(jié)果:
a + b : 30
a - b : -10
a * b : 200
b / a : 2
b % a : 0
a不等于b
注意:
乘號(hào)(*)前邊必須加反斜杠(\)才能實(shí)現(xiàn)乘法運(yùn)算;
if...then...fi 是條件語(yǔ)句,后續(xù)將會(huì)講解。
注意:條件表達(dá)式要放在方括號(hào)之間,并且要有空格,例如?[$a==$b] 是錯(cuò)誤的,必須寫成?[ $a == $b ]。
關(guān)系運(yùn)算符
關(guān)系運(yùn)算符只支持?jǐn)?shù)字,不支持字符串,除非字符串的值是數(shù)字。
先來(lái)看一個(gè)關(guān)系運(yùn)算符的例子:
if [ $a -eq $b ]
then
? ?echo "$a -eq $b : a等于b"
else
? ?echo "$a -eq $b: a不等于b"
fi
if [ $a -ne $b ]
then
? ?echo "$a -ne $b: a不等于b"
else
? ?echo "$a -ne $b : a等于b"
fi
if [ $a -gt $b ]
then
? ?echo "$a -gt $b: a大于b"
else
? ?echo "$a -gt $b: a不大于b"
fi
if [ $a -lt $b ]
then
? ?echo "$a -lt $b: a小于b"
else
? ?echo "$a -lt $b: a不小于b"
fi
if [ $a -ge $b ]
then
? ?echo "$a -ge $b: a大于等于b"
else
? ?echo "$a -ge $b: a不大于等于b"
fi
if [ $a -le $b ]
then
? ?echo "$a -le $b: a小于等于b"
else
? ?echo "$a -le $b: a不小于等于b"
fi
運(yùn)行結(jié)果:
10 -eq 20: a不等于b
10 -ne 20: a不等于b
10 -gt 20: a不大于b
10 -lt 20: a小于b
10 -ge 20: a不大于等于b
10 -le 20: a小于等于b
布爾運(yùn)算符
先來(lái)看一個(gè)布爾運(yùn)算符的例子:
if [ $a != $b ]
then
? ?echo "$a != $b : a不等于b"
else
? ?echo "$a != $b: a等于b"
fi
if [ $a -lt 100 -a $b -gt 15 ]
then
? ?echo "$a -lt 100 -a $b -gt 15 : returns true"
else
? ?echo "$a -lt 100 -a $b -gt 15 : returns false"
fi
if [ $a -lt 100 -o $b -gt 100 ]
then
? ?echo "$a -lt 100 -o $b -gt 100 : returns true"
else
? ?echo "$a -lt 100 -o $b -gt 100 : returns false"
fi
if [ $a -lt 5 -o $b -gt 100 ]
then
? ?echo "$a -lt 100 -o $b -gt 100 : returns true"
else
? ?echo "$a -lt 100 -o $b -gt 100 : returns false"
fi
運(yùn)行結(jié)果:
10 != 20 : a不等于b
10 -lt 100 -a 20 -gt 15 : returns true
10 -lt 100 -o 20 -gt 100 : returns true
10 -lt 100 -o 20 -gt 100 : returns false
字符串運(yùn)算符
先來(lái)看一個(gè)例子:
#!/bin/sh
a="abc"
b="efg"
if [ $a = $b ]
then
? ?echo "$a = $b : a等于b"
else
? ?echo "$a = $b: a不等于b"
fi
if [ $a != $b ]
then
? ?echo "$a != $b : a不等于b"
else
? ?echo "$a != $b: a等于b"
fi
if [ -z $a ]
then
? ?echo "-z $a : string 長(zhǎng)度為0"
else
? ?echo "-z $a : string 長(zhǎng)度不為0"
fi
if [ -n $a ]
then
? ?echo "-n $a : string 長(zhǎng)度不為0"
else
? ?echo "-n $a : string 長(zhǎng)度為0"
fi
if [ $a ]
then
? ?echo "$a : string 不為空"
else
? ?echo "$a : string 為空"
fi
運(yùn)行結(jié)果:
abc = efg: a不等于b
abc != efg : a不等于b
-z abc : string 長(zhǎng)度不為0
-n abc : string 長(zhǎng)度不為0
abc : string 不為空
文件測(cè)試運(yùn)算符
文件測(cè)試運(yùn)算符用于檢測(cè) Unix 文件的各種屬性。
轉(zhuǎn)載于:https://blog.51cto.com/8169085/1793549
總結(jié)
以上是生活随笔為你收集整理的10.Shell操作符的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: gerrit调试
- 下一篇: golang内置数据类型作为函数参数