shell指令碼判斷檔案型別

2021-09-24 20:59:43 字數 1316 閱讀 5414

$1在shell中稱為「位置引數」,表示傳入的第1個引數(第1個入參)。

test -z $1 是乙個判斷表示式,用於判斷$1的值是否為空字串。

雖然 linux 和 unix 的每個版本中都包含 test 命令,但該命令有乙個更常用的別名 — 左方括號:[test 及其別名通常都可以在/usr/bin 或 /bin (取決於作業系統版本和**商)找到。

比如:test expression

[ expression ]

在這兩種情況下,test 都評估乙個表示式,然後返回真或假。如果它和 if、while 或 until 命令結合使用,則您可以對程式流進行廣泛的控制。

不過,您無需將 test 命令與任何其它結構一起使用;您可以從命令列直接執行它來檢查幾乎任何東西的狀態。

test 檔案運算子

利用這些運算子,您可以在程式中根據對檔案型別的評估結果執行不同的操作:

-b file 如果檔案為乙個塊特殊檔案,則為真

-c file 如果檔案為乙個字元特殊檔案,則為真

-d file 如果檔案為乙個目錄,則為真

-e file 如果檔案存在,則為真

-f file 如果檔案為乙個普通檔案,則為真

-g file 如果設定了檔案的 sgid 位,則為真

-g file 如果檔案存在且歸該組所有,則為真

-k file 如果設定了檔案的粘著位,則為真

-o file 如果檔案存在並且歸該使用者所有,則為真

-p file 如果檔案為乙個命名管道,則為真

-r file 如果檔案可讀,則為真

-s file 如果檔案的長度不為零,則為真

-s file 如果檔案為乙個套接字特殊檔案,則為真

-t fd 如果 fd 是乙個與終端相連的開啟的檔案描述符(fd 預設為 1),則為真

-u file 如果設定了檔案的 suid 位,則為真

-w file 如果檔案可寫,則為真

-x file 如果檔案可執行,則為真

##執行shell指令碼:

[kiosk@asimov ~]$ sh  +x  check_file.sh  /mnt/

is a directory

[kiosk@asimov ~]$ sh +x check_file.sh /etc/passwd

is a file

shell指令碼檔案型別與字串判斷

運算子 描述 示例 檔案比較運算子 e filename 如果 filename存在,則為真 e var log syslog d filename 如果 filename為目錄,則為真 d tmp mydir f filename 如果 filename為常規檔案,則為真 f usr bin gr...

判斷檔案型別

判斷檔案型別 檔案的真正型別,不是根據副檔名判斷 通過檔案頭來判斷 檔案型別列舉引數 如下 using system using system.collections.generic using system.linq using system.text namespace servicecontr...

PHP 判斷檔案型別

參考 黑夜路人 一般我們都是按照副檔名來判斷檔案型別,但是這個很不靠譜,輕易就通過修改副檔名來躲避了,一般必須要讀取檔案資訊來識別。foreach files as file 注 檔名擴充套件 linux不使用檔名擴充套件來識別檔案的型別。相反,linux根據檔案的頭內容來識別其型別。為了提高人類可...