請注意查看代碼中的文字注釋
#!/bin/bash # shell運算和文档運算 # 布爾運算符 # ! 非運算,表達式爲 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=100 b=200 if [ $a != $b ] then echo "$a != $b: a不等於b" else echo "$a != $b: a等於b" fi if [ $a -lt 100 -a $b -gt 15 ] then echo "$a -lt 100 -a $b -gt 15 : 返回 true" else echo "$a -lt 100 -a $b -gt 15 : 返回 false" fi if [ $a -lt 100 -o $b -gt 100 ] then echo "$a -lt 100 -o $b -gt 100 : 返回 true" else echo "$a -lt 100 -o $b -gt 100 : 返回 false" fi if [ $a -lt 5 -o $b -gt 100 ] then echo "$a -lt 100 -o $b -gt 100 : 返回 true" else echo "$a -lt 100 -o $b -gt 100 : 返回 false" fi # 邏輯運算符 # && 邏輯的 AND [[ $a -lt 100 && $b -gt 100 ]] 返回 false # || 邏輯的 OR [[ $a -lt 100 || $b -gt 100 ]] 返回 true 字符串運算符 # = 檢測兩個字符串是否相等,相等返回 true。 [ $a = $b ] 返回 false。 # != 檢測兩個字符串是否相等,不相等返回 true。 [ $a != $b ] 返回 true。 # -z 檢測字符串長度是否爲0,爲0返回 true。 [ -z $a ] 返回 false。 # -n 檢測字符串長度是否爲0,不爲0返回 true。 [ -z $a ] 返回 true。 # str 檢測字符串是否爲空,不爲空返回 true。 [ $a ] 返回 true。 a="abcd" b="edfg" if [ $a = $b ] then echo "$a = $b : a 等於 b" else echo "$a = $b: a 不等於 b" fi if [ $a != $b ] then echo "$a != $b : a 不等於 b" else echo "$a != $b: a 等於 b" fi if [ -z $a ] then echo "-z $a : 字符串長度爲 0" else echo "-z $a : 字符串長度不爲 0" fi if [ -n $a ] then echo "-n $a : 字符串長度不爲 0" else echo "-n $a : 字符串長度爲 0" fi if [ $a ] then echo "$a : 字符串不爲空" else echo "$a : 字符串爲空" fi # 文档測試運算符 可以用test -b file 這樣 # -b file 檢測文档是否是塊設備文档,如果是,則返回 true。 [ -b $file ] 返回 false。 # -c file 檢測文档是否是字符設備文档,如果是,則返回 true。 [ -b $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。 file="/root/shell/3.sh" if [ -r $file ] then echo "文档可讀" else echo "文档不可讀" fi if [ -w $file ] then echo "文档可寫" else echo "文档不可寫" fi if [ -x $file ] then echo "文档可執行" else echo "文档不可執行" fi if [ -f $file ] then echo "文档爲普通文档" else echo "文档爲特殊文档" fi if [ -d $file ] then echo "文档是個目錄" else echo "文档不是個目錄" fi if [ -s $file ] then echo "文档不爲空" else echo "文档爲空" fi if [ -e $file ] then echo "文档存在" else echo "文档不存在" fi