關係運算子只支援數字,不支援字串,除非字串的值是數字。val=`expr 2 + 2`
echo "兩數之和為 : $val"
下表列出了常用的關係運算子,假定變數 a 為 10,變數 b 為 20:
運算子說明
舉例-eq
檢測兩個數是否相等,相等返回 true。
[ $a -eq $b ] 返回 false。
-ne檢測兩個數是否不相等,不相等返回 true。
[ $a -ne $b ] 返回 true。
-gt檢測左邊的數是否大於右邊的,如果是,則返回 true。
[ $a -gt $b ] 返回 false。
-lt檢測左邊的數是否小於右邊的,如果是,則返回 true。
[ $a -lt $b ] 返回 true。
-ge檢測左邊的數是否大於等於右邊的,如果是,則返回 true。
[ $a -ge $b ] 返回 false。
-le檢測左邊的數是否小於等於右邊的,如果是,則返回 true。
[ $a -le $b ] 返回 true。
假定變數 a 為 10,變數 b 為 20:
運算子說明舉例!
非運算,表示式為 true 則返回 false,否則返回 true。
[ ! false ] 返回 true。
-o或運算,有乙個表示式為 true 則返回 true。
[ $a -lt 20 -o $b -gt 100 ] 返回 true。
-a與運算,兩個表示式都為 true 才返回 true。
[ $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。
!=檢測兩個字串是否相等,不相等返回 true。
[ $a != $b ] 返回 true。
-z檢測字串長度是否為0,為0返回 true。
[ -z $a ] 返回 false。
-n檢測字串長度是否為0,不為0返回 true。
[ -n "$a" ] 返回 true。
str檢測字串是否為空,不為空返回 true。
[ $a ] 返回 true。
變數 file 表示檔案"/var/www/runoob/test.sh",它的大小為100位元組,具有 rwx 許可權
操作符說明
舉例-b file
檢測檔案是否是塊裝置檔案,如果是,則返回 true。
[ -b $file ] 返回 false。
-c file
檢測檔案是否是字元裝置檔案,如果是,則返回 true。
[ -c $file ] 返回 false。
-d file
檢測檔案是否是目錄,如果是,則返回 true。
[ -d $file ] 返回 false。
-f file
檢測檔案是否是普通檔案(既不是目錄,也不是裝置檔案),如果是,則返回 true。
[ -f $file ] 返回 true。
-g file
檢測檔案是否設定了 sgid 位,如果是,則返回 true。
[ -g $file ] 返回 false。
-k file
檢測檔案是否設定了粘著位(sticky bit),如果是,則返回 true。
[ -k $file ] 返回 false。
-p file
檢測檔案是否是有名管道,如果是,則返回 true。
[ -p $file ] 返回 false。
-u file
檢測檔案是否設定了 suid 位,如果是,則返回 true。
[ -u $file ] 返回 false。
-r file
檢測檔案是否可讀,如果是,則返回 true。
[ -r $file ] 返回 true。
-w file
檢測檔案是否可寫,如果是,則返回 true。
[ -w $file ] 返回 true。
-x file
檢測檔案是否可執行,如果是,則返回 true。
[ -x $file ] 返回 true。
-s file
檢測檔案是否為空(檔案大小是否大於0),不為空返回 true。
[ -s $file ] 返回 true。
-e file
檢測檔案(包括目錄)是否存在,如果是,則返回 true。
[ -e $file ] 返回 true。
if condition
then
command1
command2
...commandn
fi
if condition
then
command1
command2
...commandn
else
command
fi
if condition1
then
command1
elif condition2
then
command2
else
commandn
fi
例如:for var in item1 item2 ... itemn
do command1
command2
...commandn
done
for loop in 1 2 3 4 5
do echo "the value is: $loop"
done
until 迴圈執行一系列命令直至條件為 true 時停止。while condition
do command
done
until condition
do command
done
case 值 in
模式1)
command1
command2
...commandn
;;模式2)
command1
command2
...commandn
;;esac
break命令允許跳出所有迴圈(終止執行後面的所有迴圈)。continue命令與break命令類似,只有一點差別,它不會跳出所有迴圈,僅僅跳出當前迴圈。echo '輸入 1 到 4 之間的數字:'
echo '你輸入的數字為:'
read anum
case $anum in
1) echo '你選擇了 1'
;;2) echo '你選擇了 2'
;;3) echo '你選擇了 3'
;;4) echo '你選擇了 4'
;;*) echo '你沒有輸入 1 到 4 之間的數字'
;;esac
shell 指令碼運算子
1 數值 格式 test num1 opr num2 num1 opr num2 opr 取值 相等 eq 不等 ne 大於 gt 小於 lt l是字母l的小寫 小於等於 le 大於等於 ge 2 字串 格式 str1 opr str2 opr str opr取值 相等 不等 空串 z 非空串 n ...
shell指令碼 運算子
bin bash val expr 2 2 echo 兩數之和為 val 兩數之和為 4注意 表示式和運算子之間要有空格,例如 2 2 是不對的,必須寫成 2 2,這與我們熟悉的大多數程式語言不一樣。完整的表示式要被 空格包含,注意這個字元不是常用的單引號,在 esc 鍵下邊。bin bash ex...
Shell 基本運算子
好久沒用過shell了,最近複習下。扣了幾張老大部落格的圖嘿嘿.shell 和其他程式語言一樣,支援多種運算子,包括 原生bash不支援簡單的數 算,但是可以通過其他命令來實現,例如 awk 和 expr,expr 最常用。expr 是一款表示式計算工具,使用它能完成表示式的求值操作。示例 root...