幕布斯7119047
要检查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然而,作为乔恩·埃里克森指出,如果不考虑到指向目录的符号链接也将通过此检查,则后续命令可能无法正常工作。例如,运行该程序: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"
fifi请特别注意用于包装变量的双引号,其原因由8 jean解释。另一个答案.如果变量包含空格或其他不寻常的字符,可能会导致脚本失败。