我想检查是否存在具有相同名称的文件或目录。
是否有任何运算符(期望-e
)来检查文件或目录,我不想添加任何额外条件。
以下代码可以正常检查文件是否存在:
#!/bin/bash
if [ -e /path/to/the/file/sample ]
then
echo "ok"
else
echo "nok"
fi
请注意sample
可以是文件或目录。
答案 0 :(得分: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
等命令的退出代码。
if ls "/path/to/the/file/sample" &>/dev/null ; then echo "is here";else echo "not here";fi
如果您尝试在现有文件或目录上执行ls
ls
将返回0,否则将返回非零值(在我的测试中为不存在的文件或目录返回2) 。
需要引用来处理可能包含空格的正确名称。