要检查目录是否存在:
if [ -d "$DIRECTORY" ]; then
echo "$DIRECTORY 存在。"
fi
要检查目录是否不存在:
if [ ! -d "$DIRECTORY" ]; then
echo "$DIRECTORY 不存在。"
fi
然而,如果你没有考虑到指向目录的符号链接也会通过此检查,后续命令可能不会按预期工作。例如,运行以下代码:
ln -s "$ACTUAL_DIR" "$SYMLINK"
if [ -d "$SYMLINK" ]; then
rmdir "$SYMLINK"
fi
将产生错误信息:
rmdir: 无法删除 'symlink': 不是目录
因此,如果后续命令期望目录,符号链接可能需要区别对待:
if [ -d "$LINK_OR_DIR" ]; then
if [ -L "$LINK_OR_DIR" ]; then
# 这是一个符号链接!
# 符号链接特定的命令放在这里。
rm "$LINK_OR_DIR"
else
# 这是一个目录!
# 目录命令放在这里。
rmdir "$LINK_OR_DIR"
fi
fi
特别注意用于包裹变量的双引号。
如果变量包含空格或其他特殊字符,可能会导致脚本失败。