Shell 脚本 if -e 的使用详解

19 min read

在 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 的取反!

参考文档: