if 條件語(yǔ)句
if [ $1x == "ab"x ]; then
echo "you had enter ab"
elif [ $1x == "cd"x ]; then
echo "you had enter cd"
else
echo "you had enter unexpected word"
fi
比較
對(duì)比字符串只能使用==、<、>、!=、-z、-n。對(duì)比字符串時(shí),末尾一定要加上x(chóng)(或者a、b等)一個(gè)字符,因?yàn)閕f [ $1x == "ab"x ]時(shí)如果沒(méi)有了x ,并且$1是"",這個(gè)語(yǔ)句會(huì)翻譯成if [ == "ab" ],左邊相當(dāng)于沒(méi)有東西了,會(huì)報(bào)語(yǔ)法錯(cuò)誤。或者使用[[ ]],就不需要x了。使用<或者>時(shí),如果是用[ ],需要用轉(zhuǎn)義符"\",如\>。
對(duì)比數(shù)字使用既能使用-eq、-ne、-gt、-ge、-lt、-le,也能使用==、<、>、!=。其中-eq的意思是equal,-ne是unequal,-gt是greater than,-ge是greater than or equal to,-lt是less than,-le是less than or equal to。
[和[[的區(qū)別
區(qū)別一。在[中使用邏輯運(yùn)算符,需要使用-a(and)或者-o(or)。在[[中使用邏輯運(yùn)算符,需要使用&&或者||。
區(qū)別二。[是shell命令,在它包圍的表達(dá)式是它的命令行參數(shù),所以串比較符>和<需要轉(zhuǎn)義,否則就變成io重定向了。[[是shell關(guān)鍵字,不會(huì)做命令行擴(kuò)展,所以<和>不需要進(jìn)行轉(zhuǎn)義。但是語(yǔ)法相對(duì)嚴(yán)格,如在[中可以用引號(hào)括起操作付,[[則不行。如if [ "-z" "ab" ]。
區(qū)別三。[[可以做算術(shù)擴(kuò)展,[則不行。如if [[ 11+1 -eq 100 ]],而if [ 11+1 -eq 100 ]則會(huì)報(bào)錯(cuò)。
FILE
在高級(jí)語(yǔ)言中,判斷文件是否存在等各種狀態(tài)都是需要調(diào)用特定的函數(shù)進(jìn)行判斷。而在shell中,這方面就比較方便些,只需要運(yùn)算符即可。
常用的文件判斷運(yùn)算符如下:
-e 文件是否存在
-f 文件是否是普通文件(不是目錄、設(shè)備文件、鏈接文件)
-s 表示文件大小不為0
-d 表示文件是否是目錄
-b 表示是塊設(shè)備(光驅(qū)、軟盤(pán)等)
-c 表示是字符設(shè)備(鍵盤(pán)、聲卡等)
-p 表示是管道
-h 表示是符號(hào)鏈接
-S 表示是否是socket
-r、-w、-x表示文件是否有可讀、可寫(xiě)、可執(zhí)行權(quán)限(指運(yùn)行這個(gè)測(cè)試命令的用戶(hù))
f1 -nt f2 f1是否比f(wàn)2新(new than)
f1 -ot f2 f1是否比f(wàn)2舊(old than)
f1 -ef f2 f1和f2是否是相同文件的硬鏈接
使用!時(shí)表示上述結(jié)果取反,由于內(nèi)容較多,這里不一一列舉了。下面一個(gè)例子可以作為編程參考
寫(xiě)入字符傳到文件中
echo something -> filename
總結(jié)
-e 文件存在
-a 文件存在(已被棄用)
-f 被測(cè)文件是一個(gè)regular文件(正常文件,非目錄或設(shè)備)
-s 文件長(zhǎng)度不為0
-d 被測(cè)對(duì)象是目錄
-b 被測(cè)對(duì)象是塊設(shè)備
-c 被測(cè)對(duì)象是字符設(shè)備
-p 被測(cè)對(duì)象是管道
-h 被測(cè)文件是符號(hào)連接
-L 被測(cè)文件是符號(hào)連接
-S(大寫(xiě)) 被測(cè)文件是一個(gè)socket
-t 關(guān)聯(lián)到一個(gè)終端設(shè)備的文件描述符。用來(lái)檢測(cè)腳本的stdin[-t0]或[-t1]是一個(gè)終端
-r 文件具有讀權(quán)限,針對(duì)運(yùn)行腳本的用戶(hù)
-w 文件具有寫(xiě)權(quán)限,針對(duì)運(yùn)行腳本的用戶(hù)
-x 文件具有執(zhí)行權(quán)限,針對(duì)運(yùn)行腳本的用戶(hù)
-u set-user-id(suid)標(biāo)志到文件,即普通用戶(hù)可以使用的root權(quán)限文件,通過(guò)chmod +s file實(shí)現(xiàn)
-k 設(shè)置粘貼位
-O 運(yùn)行腳本的用戶(hù)是文件的所有者
-G 文件的group-id和運(yùn)行腳本的用戶(hù)相同
-N 從文件最后被閱讀到現(xiàn)在,是否被修改
f1 -nt f2 文件f1是否比f(wàn)2新
f1 -ot f2 文件f1是否比f(wàn)2舊
f1 -ef f2 文件f1和f2是否硬連接到同一個(gè)文件
二元比較操作符,比較變量或比較數(shù)字
整數(shù)比較:
-eq 等于 if [ "$a" -eq "$b" ]
-ne 不等于 if [ "$a" -ne "$b" ]
-gt 大于 if [ "$a" -gt "$b" ]
-ge 大于等于 if [ "$a" -ge "$b" ]
-lt 小于 if [ "$a" -lt "$b" ]
-le 小于等于 if [ "$a" -le "$b" ]
< 小于(需要雙括號(hào)) (( "$a" < "$b" ))
<= 小于等于(...) (( "$a" <= "$b" ))
> 大于(...) (( "$a" > "$b" ))
>= 大于等于(...) (( "$a" >= "$b" ))
字符串比較:
= 等于 if [ "$a" = "$b" ]
== 與=等價(jià)
!= 不等于 if [ "$a" = "$b" ]
< 小于,在ASCII字母中的順序:
if [[ "$a" < "$b" ]]
if [ "$a" \< "$b" ] #需要對(duì)<進(jìn)行轉(zhuǎn)義
> 大于
-z 字符串為null,即長(zhǎng)度為0
-n 字符串不為null,即長(zhǎng)度不為0
顯示當(dāng)前路徑
pwd
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。