在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 以及...