linux expr

expr 命令

用途

求表達式變量的值。

語法

expr Expression

描述

expr 命令讀入 Expression 參數,計算它的值,然後將結果寫入到標準輸出。

您必須對 Expression 參數應用以下規則:

  •  用空格隔開每個項。
  •  用 / (反斜槓) 放在 shell 特定的字符前面。
  •  對包含空格和其他特殊字符的字符串要用引號括起來。

整數前面可以放一個一元連字符。在內部,整數被當作 32 位,雙互補數。

注: expr 命令返回一個 0 來指示一個零值,而不是空字符串。

以下項描述了 Expression 參數的運算符和關鍵字。需要轉義的字符由一個 / (反斜槓) 放在前面。這些項按照優先權遞增的順序列出,具有相等的優先權的運算符分組在 {} (大括號) 中:

Expression1 /| Expression2 返回 Expression1 如果它不是空值或者 0 值的話,否則返回 Expression2 。
Expression1 /& Expression2 返回 Expression1 如果兩個表達式都不是空值或者 0 值,否則返回一個 0 值。
Expression1 { =, />, />=, /<, /<=, != } Expression2 如果兩個表達式都是整數,返回整數比較的結果;否則它返回的是字符串比較的結果。
Expression1 {+, - } Expression2 整數值變量的加或者減。
Expression1 { /*, /, % } Expression2 整數值變量的乘、除或者提供除法的餘數。
Expression1 : Expression2 將 Expression1 的運算得到的字符串與 Expression2 的運算結果的正則表達式模式進行比較。正則表達式語法與 ed 命令相同,除了所有的模式固定到字符串的開始之外(也就是說,只有以字符串的第一個字符開始的序列才被正則表達式匹配)。因此 ^ (插入符號) 在這種情況下就不是特殊字符。

一般地,匹配運算符返回匹配的字符個數(失敗的時候返回 0)。如果模式包含了一個子表達式,也就是:

/( Expression /)

則會返回包含了實際匹配的字符的字符串。

整理順序可以定義在字符範圍內使用的等價類。有關整理順序和等價類的更多信息,請參閱《AIX V6.1 本地語言支持指南與參考大全》 中的『瞭解語言環境的環境變量』 

   
注: 以下字符串變量會超過標準,其行爲可能在不同的操作系統中會有不同。這些字符串變量是“不”可移植的。

match String1 String2 與 Expression1 : Expression2 相同。
length String1 返回 String1 的長度。
index String1 String2 返回 String1 中包含 String2 中任意字符的第一個位置。
substr String1 StartPosition Length
  返回一個以 StartPosition 的字符開始的在String1 中的字符串,並且是 Length 長度的字符串。

退出狀態

此命令返回以下退出值:

0 Expression 參數運算值既不爲空也不爲 0。
1 Expression 參數的計算值或者爲空或者爲 0。
2 Expression 參數無效。
>2 發生錯誤。
注: 在 shell 處理完參數後,expr 命令除了利用數值外不能區分運算符和操作數。因此,如果 $a的值是 j 的話,命令:

expr $a = j

就像:

expr j = j

在 shell 將所有的參數都傳給 expr 命令之後。以下情況也爲 true:

expr X$a = Xj

示例


### 字串長度 
  
  shell>> expr length "this is a test" 
  14 
  
  ### 數字商數 
  
  shell>> expr 14 % 9 
  5 
  
  ### 從位置處抓取字串 
  
  shell>> expr substr "this is a test" 3 5 
  is is 
  
  ### 數字串 only the first character 
  
  shell>> expr index "testforthegame" e 
  2 
  
  ### 字串真實重現 
  
  shell>> expr quote thisisatestformela 
  thisisatestformela

~~~~~~~~~~~~~~~~~

expr命令是一個手工命令行計數器,用於在UNIX/LINUX下求表達式變量的值,一般用於整數值,也可用於字符串。
–格式爲:
expr Expression(命令讀入Expression 參數,計算它的值,然後將結果寫入到標準輸出)
–參數應用規則:
用空格隔開每個項;
用 \ (反斜槓) 放在 shell 特定的字符前面;
對包含空格和其他特殊字符的字符串要用引號括起來

–expr用法實例講解:
(1)、計算字串長度
 > expr length “this is a test”
 14
(2)、抓取字串
 > expr substr “this is a test” 3 5
 is is
(3)、抓取第一個字符數字串出現的位置
 > expr index “sarasara”  a
 2
(4)、字串真實重現
 > expr quote sara
 sara
(5)、整數運算
 > expr 14 % 9
 5
 > expr 10 + 10
 20
 > expr 1000 + 900
 1900
 > expr 30 / 3 / 2
 5
 > expr 30 \* 3 (使用乘號時,必須用反斜線屏蔽其特定含義。因爲shell可能會誤解顯示星號的意義)
 90
 > expr 30 * 3
 expr: Syntax error
(6)、增量計數
說明:expr在循環中用於增量計算。先將變量初始化爲0,然後循環值加1,反引號的用法爲命令替代。
> LOOP=0
> LOOP=`expr $LOOP + 1`
(7)、數值測試
說明:用expr測試一個數。如果試圖計算非整數,則會返回錯誤。
> rr=3.4
> expr $rr + 1
expr: non-numeric argument
> rr=5
> expr $rr + 1
6
(8)、模式匹配
說明:expr也有模式匹配功能。可以使用expr通過指定冒號選項計算字符串中字符數。.*意即任何字符重複0次或多次。
> VALUE=account.doc
> expr $VALUE : &lsquo;.*’
8
在expr中可以使用字符串匹配操作,這裏使用模式抽取.doc文件附屬名。
$expr $VALUE : ‘\(.*\).doc’
accounts


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章