如何检查Bash Shell脚本中是否存在目录?

基础色

在Bash shell脚本中,可以使用什么命令来检查目录是否存在?

基础色

要检查shell脚本中是否存在目录,可以使用以下命令:

if [ -d "$DIRECTORY" ]; then
  # Control will enter here if $DIRECTORY exists.
fi

或检查目录是否不存在:

if [ ! -d "$DIRECTORY" ]; then
  # Control will enter here if $DIRECTORY doesn't exist.
fi

但是,正如乔恩·埃里克森Jon Ericson)所指出的,如果您不考虑到目录的符号链接也将通过此检查,则后续命令可能无法按预期运行。例如运行此:

ln -s "$ACTUAL_DIR" "$SYMLINK"
if [ -d "$SYMLINK" ]; then 
  rmdir "$SYMLINK" 
fi

会产生错误信息:

rmdir: failed to remove `symlink': Not a directory

因此,如果后续命令需要目录,则可能必须区别对待符号链接:

if [ -d "$LINK_OR_DIR" ]; then 
  if [ -L "$LINK_OR_DIR" ]; then
    # It is a symlink!
    # Symbolic link specific commands go here.
    rm "$LINK_OR_DIR"
  else
    # It's a directory!
    # Directory command goes here.
    rmdir "$LINK_OR_DIR"
  fi
fi

请特别注意用于包装变量的双引号。8jean在另一个答案中对此进行了解释

如果变量包含空格或其他异常字符,则可能会导致脚本失败。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在bash脚本的特定目录中检查文件是否存在?

如何检查目录是否存在?

如何检查Shell脚本中是否存在文件

检查Shell脚本中是否存在带通配符的文件

如何检查Shell脚本中是否存在命令?

检查Bash Shell脚本中输入参数的存在

如何通过Bash脚本检查程序是否存在?

如何检查bash中是否存在文件或文件目录?

如何使用Shell脚本检查存储桶是否存在?

检查shell脚本中是否存在git repo

检查bash中是否存在符合特定条件的目录

Bash:如何检查目录是否存在?

Bash:如何检查用户是否存在?

如何检查文件或目录的大小是否大于bash中的值?

如何使用Shell脚本检查文件中是否存在IP地址?

如何测试Shell脚本的目录中是否存在以特定前缀开头的文件

使用bash脚本检查是否存在多个目录

如何通过bash脚本检查文件是否存在?

Bash脚本:如何在目录中检查活动的sshfs挂载?

Shell脚本:如何检查多个组是否存在并在回显中显示

bash脚本-如何检查以开头的目录是否存在

用于检查文件 A 或 B 是否存在于目录中的 Shell 脚本

检查 bash 脚本中是否存在变量

在 bash 中检查目录是否存在不会失败

检查批处理脚本中是否存在任何文件,但不存在目录

如何检查C中的目录是否存在

如何检查 Python 中是否存在目录?

用于检查文件中是否存在行的 Shell 脚本

如何检查 Bash shell 脚本中是否存在目录?