1.expr命令一般用于整數(shù)值,其一般格式為:
expr argument operator argument 一般的用法是使用expr做算術(shù)運(yùn)算,如: [root@centos ~]# expr 10 + 20 30 $expr 30 / 3 / 2 5 (注意運(yùn)算符左右都有空格 ,如果沒有空格表示是字符串連接) 使用乘號時,必須用反斜線屏蔽其特定含義。因?yàn)閟hell可能會誤解顯示星號的意義。如: [root@centos ~]# expr 10 * 10 //:錯誤, expr: syntax error [root@centos ~]# expr 10 \* 10 //正確 100 2.利用expr,把輸出導(dǎo)入/dev/null,可以作判斷。 如果表達(dá)式成功,可以如下表示: $value=12 $expr $value + 10 > /dev/null 2>&1 $echo $? 0 如果表達(dá)式失敗,返回非0值 $value=hello $expr $value + 10 > /dev/null 2>&1 $echo $? 2 3.expr也操作用于字符串 字符串比較: expr 如果成功,返回值1,任何其他值為無效或錯誤。如下面的例子測試兩個字符串是否相等,這里字符串為“hello”和hello”。 $value=hello $expr $value = "hello" 1 #這時候shell的返回值為0。 $echo $? 0 4.expr的模式匹配: 關(guān)于expr模式匹配,可以使用expr通過指定冒號:選項(xiàng)指定要進(jìn)行字符串模式匹配。 .*代表任 何字符重復(fù)0次或多次。返回值為括號中的內(nèi)容. 如在tomcat的catalina.sh,使用了expr的模式匹配來獲取連接文件的真實(shí)路徑,例子如下: # resolve links - $0 may be a softlink PRG="$0" while [ -h "$PRG" ]; do ls=`ls -ld "$PRG"` link=`expr "$ls" : '.*-> \(.*\)$'` #這里expr的返回值為連接文件的真實(shí)路徑 if expr "$link" : '/.*' > /dev/null; then #路徑名返回1 PRG="$link" else PRG=`dirname "$PRG"`/"$link" fi done |
|