什么命令检查 Bash shell 脚本中的目录是否存在?
检查目录是否存在:
if [ -d "$DIRECTORY" ]; then
echo "$DIRECTORY does exist."
fi
检查目录是否不存在:
if [ ! -d "$DIRECTORY" ]; then
echo "$DIRECTORY does not exist."
fi
然而,作为乔恩·埃里克森 https://stackoverflow.com/users/1438/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 解释了其中的原因在另一个答案中 https://stackoverflow.com/a/67458/102401.
如果变量包含空格或其他异常字符,则可能会导致脚本失败。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)