要检查shell脚本中是否存在目录,可以使用以下命令:if[-d"$DIRECTORY"];then
#Controlwillenterhereif$DIRECTORYexists.fi
或者检查目录是否不存在:if[!-d"$DIRECTORY"];then
#Controlwillenterhereif$DIRECTORYdoesn'texist.fi
然而,作为乔恩·埃里克森指出,如果不考虑到指向目录的符号链接也将通过此检查,则后续命令可能无法正常工作。例如,运行该程序:ln-s"$ACTUAL_DIR""$SYMLINK"if[-d"$SYMLINK"];then
rmdir"$SYMLINK"fi
将产生错误消息:rmdir:failedtoremove`symlink':Notadirectory
因此,如果后续命令需要目录,则必须对符号链接进行不同的处理:if[-d"$LINK_OR_DIR"];then
if[-L"$LINK_OR_DIR"];then
#Itisasymlink!
#Symboliclinkspecificcommandsgohere.
rm"$LINK_OR_DIR"
else
#It'sadirectory!
#Directorycommandgoeshere.
rmdir"$LINK_OR_DIR"
fifi
请特别注意用于包装变量的双引号,其原因由8 jean解释。另一个答案.
如果变量包含空格或其他不寻常的字符,可能会导致脚本失败。