2017-04-05 97 views
0

我想檢查是否存在具有相同名稱的文件或目錄。 是否有任何操作員(期望-e)檢查文件或目錄,我不想添加任何額外的條件。用於檢查是否存在同名文件或目錄的Unix shell腳本

下面的代碼工作精細檢查文件是否存在:

#!/bin/bash 
if [ -e /path/to/the/file/sample ] 
then 
    echo "ok" 
else 
    echo "nok" 
fi 

注意sample可以是文件或目錄。

回答

0

在我用bash 4.2進行的測試中,條件[ -e /path/to/the/file/sample ]適用於BOTH文件和目錄。

作爲替代方案,您可以:
要麼使用其他運營商根據bash man page.

if [ -e /path/to/the/file/sample ] || [ -d /path/to/the/file/sample ];then echo "ok"; else echo "nok";fi 

或者使用命令的退出碼像ls喜歡-d。

if ls "/path/to/the/file/sample" &>/dev/null ; then echo "is here";else echo "not here";fi 

如果試圖對一個已經存在的文件或目錄ls將返回0執行ls,否則會(在我的測試回報2不存在的文件或目錄)返回一個非零值。
引用是必要的,以處理可能包含空格的正確名稱。

+0

@Yash你確定'-e'不適用於你的情況下的目錄嗎? –

相關問題