shell指令expr使用指南

2021-07-12 00:16:12 字數 2547 閱讀 5604

在linux shell命令中expr雖然不是很起眼,但是它的作用是非常大的!到目前為止,我個人看來最大的作用就是兩個——四則運算和字串的操作。 

先說四則運算,在shell中四則運算不能簡簡單單的加減乘除,應該要寫如下的格式: 

$val1=`$val2 - 1`

其中「=」後面用「`」包住表示式,這個符號在shell中十分有用,是tab鍵上面「~」的原來形式。可以用來將很多命令的結果儲存到乙個變數中去。接著就是運算子了,運算子的左右兩邊必須是空格,否則會出錯。 

接著是強大的字串操作: 

提取指定字元的下標:expr index 內容 字元,例如:

$ind=`expr index "$content" "="`

提取字串的子串:expr substr 內容 起始位置 終點位置,例如:

$con=`expr substr "$content" "1" $ind

expr命令一般用於整數值,但也可用於字串。一般格式為: 

expr argument operator argument 

expr也是乙個手工命令列計數器。 

$expr 10 + 10 

20 $expr 1500 + 900

2500

$expr 30 / 3

10 $expr 30 / 3 / 2

5

(注意運算子左右都有空格 ,如果沒有空格表示是字串連線) 

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

$expr 30 * 3 

90

數值測試 

可以用expr測試乙個數。如果試圖計算非整數,將返回錯誤。 

$rr=1.1 

$expr $rr + 1

expr: non-numeric argument

$rr=2

$expr $rr + 1

3

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

這裡需要將乙個值賦予變數(不管其內容如何),進行數值運算,並將輸出匯入dev/null, 

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

$value=12 

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

$echo $?

0

這是乙個數。 

$value=hello 

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

$echo $?

2

這是乙個非數值字元。 

expr也可以返回其本身的退出狀態,不幸的是返回值與系統最後退出命令剛好相反,成 

功返回1,任何其他值為無效或錯誤。下面的例子測試兩個字串是否相等,這裡字串為 

「hello」和「hello」。 

$value=hello 

$expr $value = "hello"

1 $echo $?

0

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

「hello」確實等於「hello」。 

模式匹配 

expr也有模式匹配功能。可以使用expr通過指定冒號選項計算字串中字元數。.*意即任 

何字元重複0次或多次。 

$value=accounts.doc 

$expr $value : '.*'

12

在expr中可以使用字串匹配操作,這裡使用模式. d o c抽取檔案附屬名。 

$expr $value : '(.*).doc' 

accounts

shell 中陣列 

定義 

$varname[0]=value1 

$varname[1]=value2

....

引用

$echo $

從位置處抓取字串 

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

git常用指令使用指南

git常用指令使用指南1.賬戶名 159 qq.com 密碼 設定賬戶 需要和github賬戶設定一致 git config global user.name git config global user.email foxmail.com 3.提交檔案 新增git檔案到暫存區 需要和版本庫區分 g...

Ubuntu apt 使用指南

起初gnu linux系統中只有.tar.gz。使用者必須自己編譯他們想使用的每乙個程式。在debian出現之後,人們認為有必要在系統中新增 一種機制用來管理安裝在計算機上的軟體包。人們將這套系統稱為dpkg。至此著名的 package 首次在gnu linux上出現。不久之後紅帽子也 開始著手建立...

CImageList使用指南

1.綜述 在mfc 中cimagelist 類封裝了 影象列表控制項的功能,影象列表是乙個具有相同大小的 影象 可以是不同 型別 的集合,其主要用於 應用程式中大規模 圖示的儲存。該控制項是不可 見的,通常與其它如 clistbox ccombobox ccomboboxex ctabctrl 以及...