在 Shell 脚本中,if -e
用于判断文件或目录是否存在。下面是对if -e
的使用详解。
语法:
if [ -e 文件或目录路径 ]
then
# 如果文件或目录存在,则执行这里的代码
else
# 如果文件或目录不存在,则执行这里的代码
fi
示例 1:判断文件是否存在
#!/bin/bash
file="/path/to/file.txt"
if [ -e $file ]
then
echo "文件存在。"
else
echo "文件不存在。"
fi
示例 2:判断目录是否存在
#!/bin/bash
directory="/path/to/directory"
if [ -e $directory ]
then
echo "目录存在。"
else
echo "目录不存在。"
fi
在上面的示例中,我们分别判断了文件和目录是否存在,并根据判断结果输出相应的消息。如果文件或目录存在,输出"文件存在"或"目录存在";如果不存在,输出"文件不存在"或"目录不存在"。
注意事项:
-e
选项可以判断文件或目录是否存在,包括普通文件、目录、符号链接、管道、设备文件等。- 如果路径是一个链接文件,
-e
选项判断的是链接对应的文件是否存在。 - 如果路径是一个目录,
-e
选项判断的是目录本身是否存在,而不是目录中是否存在文件。 - 如果路径包含有空格等特殊字符,需要使用引号将路径括起来,避免解析问题。
- 如果要判断文件或目录是否不存在,可以使用
-e
的取反!
。
参考文档: