介紹 本篇文章主要是列舉在shell命令中常出現的一些用來做比較的運算符,這些運算符是編寫shell腳本的基礎; 數值運算符 註意:數值運算符只是針對數值的比較,如果用來比較的是字元或者字元串則會返回報錯“ integer expression expected” -eq 等於則為真,如果是對整數進 ...
介紹
本篇文章主要是列舉在shell命令中常出現的一些用來做比較的運算符,這些運算符是編寫shell腳本的基礎;
數值運算符
註意:數值運算符只是針對數值的比較,如果用來比較的是字元或者字元串則會返回報錯“ integer expression expected”
-eq 等於則為真,如果是對整數進行比較相當於“=”
-ne 不等於則為真,如果是對整數進行比較相當於“!=”
-gt 大於則為真,如果是對整數進行比較相當於“>”
-ge 大於等於則為真,如果是對整數進行比較相當於“>=”
-lt 小於則為真,如果是對整數進行比較相當於“<”
-le 小於等於則為真,如果是對整數進行比較相當於“<=”
字元串比較符
=:字元串包含的文本是否一樣
== 兩個字元串是否相等
>:比較字母的大小,比如var1 > var2,如果var1字母大於var2則返回真
<:和大於相反
!= 兩個字元串不相等
-z 空字元串
-n 非空字元串
註意:字元串的比較有時候有可能需要用雙中括弧“[[ ]]”,比如調用了命令進行比較,如果這個時候還是使用單中括弧會報錯,如下:
#!/bin/bash var1="a"; var2="a" if [[ `cat $var1` = `cat $var2` ]] then echo "eq" else echo "neq" fi
cat命令應用的必須是個文件,不能直接引號內容。
文件運算符
[ -a FILE ] :如果 FILE 存在則為真。
[ -b FILE ] :如果 FILE 存在且是一個塊特殊文件則為真。
[ -c FILE ] :如果 FILE 存在且是一個字特殊文件則為真。
[ -d FILE ] :如果 FILE 存在且是一個目錄則為真。
[ -e FILE ] :如果 FILE 存在則為真。
[ -f FILE ] :如果 FILE 存在且是一個普通文件則為真。
[ -g FILE ] :如果 FILE 存在且已經設置了SGID則為真。
[ -h FILE ] :如果 FILE 存在且是一個符號連接則為真。
[ -k FILE ] :如果 FILE 存在且已經設置了粘制位則為真。
[ -p FILE ] :如果 FILE 存在且是一個名字管道(F如果O)則為真。
[ -r FILE ] :如果 FILE 存在且是可讀的則為真。
[ -o OPTIONNAME ] :如果 shell選項 “OPTIONNAME” 開啟則為真。
[ -s FILE ] :如果 FILE 存在且大小不為o則為真。
[ -t FD ] :如果文件描述符 FD 打開且指向一個終端則為真。
[ -u FILE ] :如果 FILE 存在且設置了SUID (set user ID)則為真。
[ -w FILE ] :如果 FILE 如果 FILE 存在且是可寫的則為真。
[ -x FILE ] :如果 FILE 存在且是可執行的則為真。
[ -z STRING ]: “STRING” 的長度為零則為真。
[ -O FILE ]:如果 FILE 存在且屬有效用戶ID則為真。
[ -G FILE ]:如果 FILE 存在且屬有效用戶組則為真。
[ -L FILE ] :如果 FILE 存在且是一個符號連接則為真。
[ -n string ]:判斷內容是否為空
[ -N FILE ]: 如果 FILE 存在 and has been mod如果ied since it was last read則為真。
[ -S FILE ] :如果 FILE 存在且是一個套接字則為真。
[ FILE1 -nt FILE2 ] :如果 FILE1 has been changed more recently than FILE2, or 如果 FILE1 exists and FILE2 does not則為真。
[ FILE1 -ot FILE2 ] :如果 FILE1 比 FILE2 要老, 或者 FILE2 存在且 FILE1 不存在則為真。
[ FILE1 -ef FILE2 ] :如果 FILE1 和 FILE2 指向相同的設備和節點號則為真。
建議也使用雙中括弧
可以用test命令檢查某個條件是否成立,它可以進行數值、字元串和文件3個方面的測試,如果使用了test那麼就不要使用[]將命令括起來,否則會返回報告如“too many arguments” 。
#!/bin/bash var1="a" var2="b" var3="/data/test" if test $var1 == $var2 then echo "$var1=$var2" else echo "$var1!=$var2" fi echo "$var1,$var2" if test -x "$var3" then echo "可執行文件" fi
邏輯判斷符
-a:與操作,可以用&&代替
-0:或操作,可以用||代替
!:非操作
算術運算符
+
-
*
/
%
+=:例如var+=1等同於var=var+1
-=
*=
/=
位操作符
註意:所有的這些運算符前後都要有空格否則就不是比較而是賦值操作。
總結
備註: 作者:pursuer.chen 博客:http://www.cnblogs.com/chenmh 本站點所有隨筆都是原創,歡迎大家轉載;但轉載時必須註明文章來源,且在文章開頭明顯處給明鏈接。 《歡迎交流討論》 |