Shell 中expr的使用

來源:互聯網
上載者:User
1.expr命令一般用於整數值,其一般格式為:
expr argument operator argument
一般的用法是使用expr做算術運算,如:
[root@centos ~]# expr 10 + 20
30
$expr 30 / 3 / 2
5
(注意運算子左右都有空格 ,如果沒有空格表示是字串串連)
使用乘號時,必須用反斜線屏蔽其特定含義。因為shell可能會誤解顯示星號的意義。如:
[root@centos ~]# expr 10 * 10   //:錯誤,
expr: syntax error
[root@centos ~]# expr 10 \* 10  //正確
100
2.利用expr,把輸出匯入/dev/null,可以作判斷。
如果運算式成功,可以如下表示:
$value=12
$expr $value + 10 > /dev/null 2>&1
$echo $?
0

如果運算式失敗,返回非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的模式比對:
關於expr模式比對,可以使用expr通過指定冒號:選項指定要進行字串模式比對。 .*代表任
何字元重複0次或多次。傳回值為括弧中的內容.
如在tomcat的catalina.sh,使用了expr的模式比對來擷取串連檔案的真實路徑,例子如下:
# resolve links - $0 may be a softlink
PRG="$0" 
while [ -h "$PRG" ]; do
  ls=`ls -ld "$PRG"`
  link=`expr "$ls" : '.*-> \(.*\)$'`   #這裡expr的傳回值為串連檔案的真實路徑
  if expr "$link" : '/.*' > /dev/null; then #路徑名返回1
    PRG="$link"
  else
    PRG=`dirname "$PRG"`/"$link"
  fi
done
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.