Shell語句中if的所有引數詳解

2021-10-12 11:22:41 字數 2246 閱讀 8181

shell中if語句的所有引數詳解

[-a file] 如果file存在則為真

不過貌似有時候-a表示為and:條件與

[-b file] 如果file存在且是乙個塊特殊檔案則為真

[-c file] 如果file存在且是乙個字特殊檔案則為真

[-d file] 如果file檔案存在且是乙個目錄則為真

-d前的!是邏輯非

例如:if [ ! -d lcd

path

/lcd_path/

lcdp​a

th/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),則該目錄下的檔案只能由

一、超級管理員刪除

二、該目錄的所有者刪除

三、該檔案的所有者刪除

也就是說,即便該目錄是任何人都可以寫,但也只有檔案的屬主才可以刪除檔案。

具體例子如下:

#ls -dl /tmp

drwxrwxrwt 4 root root …

注意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] 如果字串不相等則為真

[string1

[arg1 op arg2] 「op」is one of –eq,-ne,-lt,-le,-gt or –ge.these arithmetic binary oprators return true if 「arg1」is equal to,not equal to,less than,less than or equal to,greater than,or greater than or equal to「agr2」,respectively.「arg1」and 「agr2」are integers.

解析HiveSql語句中的所有表名

今天有個需求,解析我們hivesql語句中的表名,用來分析資料倉儲中所有表的使用頻率。hive中有個語法分析器可以將sql語法轉換成語法樹,並且可以將語法樹轉換為字串。例如乙個hive的sql語句如下 select t1.c1,t1.c2,t2.c1 from lijie.table1 t1 lef...

SQL語句中的執行時引數

執行時引數 一 執行時引數的使用 sql語句中的值,我們可以使用乙個引數來代替,然後每次執行的時候都可以重新輸入這個值 例如 select last name,salary,dept id from s emp where id id 如上圖所示,使用了執行時引數 id,其中id為變數值,如果之前沒...

for語句中的 和

for int i 0 i 100 i 和for int i 0 i 100 i 是程式設計中常用的兩個語句,這兩個語句看似作用類似但實際上在使用中卻容易產生很多意想不到的問題 入下例 這段 是用歸併排序演算法對陣列進行排序,在merge函式中有三個for語句,如果使用 和使用 會嘗試完全不同的結果...