1. 程式人生 > >linux-shell---if條件語句中:-a到-z的引數定義

linux-shell---if條件語句中:-a到-z的引數定義

1、if條件控制語句

一般語句格式
if  條件(可以是:一條語句、多條語句、函式等等)
then
 Command
else
 Command
fi      

If語句忘了結尾fi,報錯資訊
test.sh: line 14: syntax error: unexpected end of fi            

這裡的條件:返回值0為真 ,返回值1為假

如1>2 返回值為0 
2、條件語句存在-a到-z的引數含義

[-a file] 如果file存在則為真
[-b file] 如果file存在且是一個塊特殊檔案則為真
[-c file] 如果file存在且是一個字特殊檔案則為真
[-d file] 如果file檔案存在且是一個目錄則為真
-d前的!是邏輯非
例如:
if [ ! -d l

cdpath/par_date ]
表示後面的那個目錄不存在,則執行後面的then操作
[-e file] 如果file檔案存在則為真
[-f file] 如果file存在且是一個普通檔案則為真
[-g file] 如果file存在且已經設定了SGID則為真(SUID 是 Set User ID, SGID 是 Set Group ID的意思)
[-h file] 如果file存在且是一個符號連線則為真
[-k file] 如果file存在且已經設定粘制位則為真
當一個目錄被設定為”粘制位”(用chmod a+t),則該目錄下的檔案只能由
一、超級管理員刪除
二、該目錄的所有者刪除
三、該檔案的所有者刪除
也就是說,即便該目錄是任何人都可以寫,但也只有檔案的屬主才可以刪除檔案。
注意other位置的t,這便是粘連位。
[-p file] 如果file存在且是一個名字管道(F如果O)則為真
管道是
Linux
裡面程序間通訊的一種方式,其他的還有像訊號(signal)、訊號量、訊息佇列、共享記憶體、套接字(socket)等。
[-r file] 如果file存在且是可讀的則為真
[-s file] 如果file存在且大小不為0則為真
[-t FD] 如果檔案描述符FD開啟且指向一個終端則為真
[-u file] 如果file存在且設定了SUID(set userID)則為真
[-w file] 如果file存在且是可寫的則為真
[-x file] 如果file存在且是可執行的則為真
[-O file] 如果file存在且屬有效使用者ID則為真
[-G file] 如果file存在且屬有效使用者組則為真
[-L file] 如果file存在且是一個符號連線則為真
[-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或者file1 exists and file2 does not則為真
[file1 –ot file2] 如果file1比file2要老,或者file2存在且file1不存在則為真
[file1 –ef file2] 如果file1和file2指向相同的裝置和節點號則為真
[-o optionname] 如果shell選項“optionname”開啟則為真
[-z string] “string”的長度為零則為真
[-n string] or [string] “string”的長度為非零non-zero則為真
[sting1==string2] 如果2個字串相同。“=”may be used instead of “==”for strict posix compliance則為真
[string1!=string2] 如果字串不相等則為真

3、條件語句中邏輯語句

邏輯非 !             條件表示式的相反
if [ ! 表示式 ]
if [ ! -d $num ]     如果不存在目錄$num
邏輯與 –a            條件表示式的並列
if [ 表示式1  –a  表示式2 ]
邏輯或 -o            條件表示式的或
if [ 表示式1  –o 表示式2 ]