shell 支援多種運算子,包括:
#!/bin/bash
a=12
# 加法
b=$(($a+4))
echo "兩數之和為: $b"
兩數之和為: 16
# -,*,/,%(取餘)類似
使用expr,bc,awk等
expr 是一款表示式計算工具,使用它能完成表示式的求值操作。
注意:使用expr 時,表示式和運算子之間要有空格
# 反引號`` 中為可執行的shell命令,其結果可賦值給變數
b=`expr $a + 4`
b=`expr 10 \* 2`
# 乘號(*)前邊必須加反斜槓(\)才能實現乘法運算;
# expr不支援浮點除法,可以用bc 或 awk實現
num3=`echo "scale=2; $num1/$num2" | bc`
# sclae控制小數點後保留幾位
echo "$num1 $num2" | awk ''
# 百分數
num3=$(echo "$num1 $num2" | awk '')
判斷相等
a=10
b=20
if [ $a == $b ]
then
echo "a 等於 b"fi
if [ $a != $b ]
then
echo "a 不等於 b"
fi
只支援數字,不支援字串,除非字串的值是數字。
-eq 檢測兩個數是否相等,相等返回 true,不相等返回 false。
-ne 是否不相等
-gt >
-lt <
-ge >=
-le <=
a=10
b=20
! 非運算,表示式為 true 則返回 false。 [ ! false ] 返回 true。
-o 或運算(or) [ $a -lt 20 -o $b -gt 100 ] 返回 true。
-a 與運算(and) [ $a -lt 20 -a $b -gt 100 ] 返回 false。
a=10
b=20
&& 邏輯的 and [[ $a -lt 100 && $b -gt 100 ]] 返回 false
|| 邏輯的 or [[ $a -lt 100 || $b -gt 100 ]] 返回 true
假定變數 a 為 "abc",變數 b 為 "efg":
= 檢測兩個字串是否相等,相等返回 true。 [ "$a" = "$b" ] 返回 false。
!= 是否不相等 [ "$a" != "$b" ] 返回 true。
-z 檢測字串長度是否為0,為0返回 true。 [ -z "$a" ] 返回 false。
-n 是否不為0 [ -n "$a" ] 返回 true。
$ 檢測字串是否為空,不為空返回 true。 [ "$a" ] 返回 true。
變數最好用「」括起來,防止變數內部有空格,導致錯誤
file 表示檔案/var/zz/test.sh
-d file 檢測檔案是否是目錄,如果是,則返回 true。
-f file 檢測檔案是否是普通檔案(既不是目錄,也不是裝置檔案),如果是,則返回true。
-r file 檢測檔案是否可讀
-w file 是否可寫
-x file 是否可執行
-s file 是否為空(檔案大小是否大於0),不為空返回 true。
-e file 檢測檔案(包括目錄)是否存在,如果是,則返回 true。
[ -e $file ] 返回 true。
example: 檢測aa.txt是否存在,存在則輸出『exist』
test -e aa.txt && echo 'exist' || echo 'not exist!'
Linux中shell基本運算
shell程式中的操作預設都是字串操作,在要執行數 算符的時候可能得到意想不到的答案 var 1 var var 1 echo var output 1 1從這個例子中可以看出shell字串連線的操作,需要注意的是空格。在shell中可以使用let來指示下面是算術表示式,let表示式內變數不用加 v...
shell 基本運算
整數運算 a 4b 5 c a b 你以為這樣的結果是9嗎?echo c 4 5 shell預設都是字串操作的,所以得到的才是4 5,而不是9,怎麼搞?1.加點料 用這個把這個表示式括起來 c a b 這裡不需要用 引用了 echo c 9 或者更簡單的寫法 echo a b 2.用let語句 le...
shell 基本運算
root 41157cff18cd workspace expr 2 4 運算子中間由空格 6root 41157cff18cd workspace expr 2 4 2root 41157cff18cd workspace expr 2 4 號前要加轉義符,否則syntax error 8root...