bash shell test条件测试[[ ]]和[ ]异同小结
test?命令非常強大,但是很難滿足其轉義需求以及字符串和算術比較之間的區別。
| 大于 | 小于 | 等于 | 不等于 |
| if [ "$a" -gt "$b" ] | if [ "$a" -lt "$b" ] | if [ "$a" -eq "$b" ] | if [ "$a" -ne "$b" ] |
| if [[ "$a" -gt "$b" ]] | if [[ "$a" -lt "$b" ]] | if [[ "$a" -eq "$b" ]] | if [[ "$a" -ne "$b" ]] |
| if ((“$a” > “$b”)) | if ((“$a” < “$b”)) | if ((“$a” == “$b”)) | if ((“$a” != “$b”)) |
字符串比較
| 大于 | 小于 | 等于 | 不等于 |
| if [ "$a" \> "$b" ] | if [ "$a" \< "$b" ] | if [ "$a" = "$b" ] if [ "$a" == "$b" ] | if [ "$a" != "$b" ] |
| if [[ "$a" > "$b" ]] | if [[ "$a" < "$b" ]] | if [[ "$a" = "$b" ]] if [[ "$a" == "$b" ]] | if [[ "$a" != "$b" ]] |
[[ ]] and []
| 功能 | [[ ]] | [ ] | 例子 |
| 字符串比較 | > | \> | ?- |
| =(or ==) | = | ?- | |
| != | != | ?- | |
| 表達式組合 | && | -a | [[ -n $var && -f $var ]] && echo “$var is a file” |
| || | -o | ?- | |
| (Pattern matching) | =(or ==) | 木有 | [[ $name = "a*" ]] -> the string “a*” |
| 正則匹配(RegularExpression matching) | =~ | 木有 | [[ $(date) =~ ^Fri\ ...\ 13 ]] && echo “It’s Friday the 13th!” |
| 特性 | ? | 例子 |
| 文件或文件夾存在 | -e | [[?-e?$config?]]?&&?echo?”config?file?exists:?$config” |
| 文件新舊比較 | -nt/-ot | [[?$file0?-nt?$file1?]]?&&?echo?”$file0?is?newer?than?$file1″ |
| 同一個文件 | -ef | [[?$input?-ef?$output?]] \?&&?{?echo?”will?not?overwrite?input?file:?$input”;?exit?1;?}? |
| 否定 | ! | - |
邏輯組合判斷的一些例子:
if [ $condition1 ] && [ $condition2 ]
if [ $condition1 -a $condition2 ]
if [[ $condition1 && $condition2 ]]
if [ $condition1 ] || [ $condition2 ]
if [ $condition1 -o $condition2 ]
if [[ $condition1 || $condition2 ]] # Also works.
#The &&, ||, operators work within a [[ ]] test, despite giving an error within a [ ] construct.
| 大于 | 小于 | 等于 | 不等于 |
| if [ "$a" -gt "$b" ] | if [ "$a" -lt "$b" ] | if [ "$a" -eq "$b" ] | if [ "$a" -ne "$b" ] |
| if [[ "$a" -gt "$b" ]] | if [[ "$a" -lt "$b" ]] | if [[ "$a" -eq "$b" ]] | if [[ "$a" -ne "$b" ]] |
| if ((“$a” > “$b”)) | if ((“$a” < “$b”)) | if ((“$a” == “$b”)) | if ((“$a” != “$b”)) |
字符串比較
| 大于 | 小于 | 等于 | 不等于 |
| if [ "$a" \> "$b" ] | if [ "$a" \< "$b" ] | if [ "$a" = "$b" ] if [ "$a" == "$b" ] | if [ "$a" != "$b" ] |
| if [[ "$a" > "$b" ]] | if [[ "$a" < "$b" ]] | if [[ "$a" = "$b" ]] if [[ "$a" == "$b" ]] | if [[ "$a" != "$b" ]] |
[[ ]] and []
| 功能 | [[ ]] | [ ] | 例子 |
| 字符串比較 | > | \> | ?- |
| =(or ==) | = | ?- | |
| != | != | ?- | |
| 表達式組合 | && | -a | [[ -n $var && -f $var ]] && echo “$var is a file” |
| || | -o | ?- | |
| (Pattern matching) | =(or ==) | 木有 | [[ $name = "a*" ]] -> the string “a*” |
| 正則匹配(RegularExpression matching) | =~ | 木有 | [[ $(date) =~ ^Fri\ ...\ 13 ]] && echo “It’s Friday the 13th!” |
| 特性 | ? | 例子 |
| 文件或文件夾存在 | -e | [[?-e?$config?]]?&&?echo?”config?file?exists:?$config” |
| 文件新舊比較 | -nt/-ot | [[?$file0?-nt?$file1?]]?&&?echo?”$file0?is?newer?than?$file1″ |
| 同一個文件 | -ef | [[?$input?-ef?$output?]] \?&&?{?echo?”will?not?overwrite?input?file:?$input”;?exit?1;?}? |
| 否定 | ! | - |
邏輯組合判斷的一些例子:
if [ $condition1 ] && [ $condition2 ]
if [ $condition1 -a $condition2 ]
if [[ $condition1 && $condition2 ]]
if [ $condition1 ] || [ $condition2 ]
if [ $condition1 -o $condition2 ]
if [[ $condition1 || $condition2 ]] # Also works.
#The &&, ||, operators work within a [[ ]] test, despite giving an error within a [ ] construct.
總結
以上是生活随笔為你收集整理的bash shell test条件测试[[ ]]和[ ]异同小结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: QWidget
- 下一篇: error while loading