2017-04-05 112 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'不适用于你的情况下的目录吗? –

相关问题