Shell expr命令


shell expr 是一個功能強大,並且比較復雜的命令,它除了可以實現整數計算,還可以結合一些選項對字符串進行處理,例如計算字符串長度、字符串比較、字符串匹配、字符串提取等。

整數計算

Shell expr 對於整數計算的用法為:

expr 表達式

expr 對表達式的格式有幾點特殊的要求:

  1)出現在表達式中的運算符、數字、變量和小括號的左右兩邊至少要有一個空格,否則會報錯。

  2)有些特殊符號必須用反斜杠\進行轉義(屏蔽其特殊含義),比如乘號*和小括號(),如果不用\轉義,那么 Shell 會把它們誤解為正則表達式中的符號(*對應通配符,()對應分組)。

  3)使用變量時要加$前綴

[c.biancheng.net]$ expr 2 + 3  #這樣才是正確的
5
[c.biancheng.net]$ expr 4 \* 5  #使用 \ 轉義后才是正確的
20
[c.biancheng.net]$ expr \( 2 + 3 \) \* 4  #使用 \ 轉義后才是正確的
20
[c.biancheng.net]$ expr $n + 2  #加上 $ 才是正確的
5
使用 expr 命令,計算結果會直接輸出,如果你希望將計算結果賦值給變量,那么需要將整個表達式用反引號``(位於 Tab 鍵的上方)包圍起來。
將 expr 的計算結果賦值給變量:
[c.biancheng.net]$ m=5
[c.biancheng.net]$ n=`expr $m + 10`
[c.biancheng.net]$ echo $n
15
expr的字符串操作1、返回字符串長度:expr length  字串
[root@zq-crmtest-20423tmp]# expr length "hello world"
11
2、返回 String1 中包含 String2 中任意字符的第一個位置: expr indexString1 String2
[root@zq-crmtest-20423tmp]# expr index "abc" "b"
2
3、提取字符串的子串:expr substr 內容 起始位置 終點位置,
[root@zq-crmtest-20423tmp]# expr substr "this is a test" 3 5
is is
4、測試兩個字符串是否相等
expr也可以返回其本身的退出狀態,不幸的是返回值與系統最后退出命令剛好相反,成功返回1,任何其他值為無效或錯誤。下面的例子測試兩個字符串是否相等,這里字符串為“hello”和“hello”。
  $value=hello
  $expr $value = "hello"
  1
  $echo $?
  0
  expr返回1

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM