在 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 個或一個以上在 * 之前的字。 \( \) 傳回括號中所匹配的字符串。 |