shell編程--數值運算

在 shell 中的四則運算必須使用 expr 這個指令來輔助。因爲這是一個指令,所以如果要將結果指定給變量,必須使用 ` 包起來。請注意,在 + - * / 的二邊都有空白,如果沒有空白將產生錯誤

$ expr 5 -2 3 $ sum=`expr 5 + 10` $ echo $sum 15 $ sum=`expr $sum / 3` $ echo $sum 5

還有一個要特別注意的是乘號 * 在用 expr 運算時,不可只寫 *。因爲 * 有其它意義,所以要使用 \* 來代表。另外,也可以用 % 來求餘數。

$ count=`expr 5 \* 3` $ echo $count $ echo `expr $count % 3` 5

我們再列出更多使用 expr 指令的方式,下列表中爲可以放在指令 expr 之後的表達式。有的符號有特殊意義,必須以 \ 將它的特殊意義去除,例如 \*,否則必須用單引號將它括起來,如 '*':

類別 語法 說明
條件判斷 expr1 \| expr2 如果 expr1 不是零或 null 則傳回 expr1,否則傳回 expr2。
expr1 \& expr2 如果 expr1 及 expr2 都不爲零或 null,則傳回 expr1,否則傳回 0。
四則運算 expr1 + expr2 傳回 expr1 加 expr2 後的值。
expr1 - expr2 傳回 expr1 減 expr2 後的值。
expr1\* expr2 傳回 expr1 乘 expr2 後的值。
expr1 / expr2 傳回 expr1 除 expr2 後的值。
expr1 % expr2 傳回 expr1 除 expr2 的餘數。
大小判斷 expr1 \> expr2 如果 expr1 大於 expr2 則傳回 1,否則傳回 0。如果 expr1 及 expr2 都是數字,則是以數字大小判斷,否則是以文字判斷。以下皆同。
expr1 \< expr2 如果 expr1 小於 expr2 則傳回 1,否則傳回 0。
expr1 = expr2 如果 expr1 等於 expr2 則傳回 1,否則傳回 0。
expr1 != expr2 如果 expr1 不等於 expr2 則傳回 1,否則傳回 0。
expr1 \>= expr2 如果 expr1 大於或等於 expr2 則傳回 1,否則傳回 0。
expr1 \<= expr2 如果 expr1 小於或等於 expr2 則傳回 1,否則傳回 0。
文字處理 expr1 : expr2 比較一固定字符串,即 regular expression。可以使用下列字符來輔助:

. 匹配一個字符。

$ 找字符串的結尾。

[list] 找符合 list 中的任何字符串。

* 找尋 0 個或一個以上在 * 之前的字。

\( \) 傳回括號中所匹配的字符串。

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