天天看點

linux expr指令

expr指令一般用于整數值,但也可用于字元串。

1.expr計數器功能。

        expr 10 + 10

        20

        expr 1500 + 900

        2500

        expr 30 / 3

        10

        expr 30 / 3 / 2

        5

        (注意運算符左右都有空格)

     使用乘号時,必須用反斜線屏蔽其特定含義。因為shell可能會誤解顯示星号的意義。

        expr 30 \* 3

        90

2.計算字串長度

expr length “this is a test”

14

3.抓取字串

expr substr “this is a test” 3 5

is is

4.抓取第一個字元數字串出現的位置

expr index "sarasara"  a

2

5.expr增量計數

        expr在循環中用于增量計算。首先,循環初始化為0,然後循環值加1,反引号的用法意

        LOOP=0

        LOOP=`expr $LOOP + 1`

6.expr判斷是否為整數

  可以用expr測試一個數。如果試圖計算非整數,将傳回錯誤。

        rr=1.1

        expr $rr + 1

        expr: non-numeric argument

        rr=2

        3

(注意:這個例子與原文不同)

  這裡需要将一個值賦予變量(不管其内容如何),進行數值運算,并将輸出導入dev/null,

  然後測試最後指令狀态,如果為0,證明這是一個數,其他則表明為非數值。

      value=12

       expr $value + 10 > /dev/null 2>&1

       echo $?

這是一個整數。

value=hello

expr $value + 10 > /dev/null 2>&1

       echo $?

       2

    這是一個非數值字元。

 7.expr本身退出狀态為1

        expr也可以傳回其本身的退出狀态,不幸的是傳回值與系統最後退出指令剛好相反,成功傳回1,任何其他值為無效或錯誤。下面的例子測試兩個字元串是否相等,這裡字元串為“hello”和“hello”。

        value=hello

        expr $value = "hello"

        1

        echo $?

        expr傳回1。不要混淆了,這表明成功。現在檢驗其最後退出狀态,傳回0表示測試成功,

        “hello”确實等于“hello”。

8.模式比對 :

        expr也有模式比對功能。可以使用expr通過指定冒号選項計算字元串中字元數。.*意即任何字元重複0次或多次。

        value=accounts.doc

        expr $value : '.*'

        12

本文轉自 fxl風 51CTO部落格,原文連結:http://blog.51cto.com/fengxiaoli/1948093

繼續閱讀