什么命令检查Bash shell脚本中是否存在目录?


当前回答

较短形式:

# if $DIR is a directory, then print yes
[ -d "$DIR" ] && echo "Yes"

其他回答

一个衬垫:

[[ -d $Directory ]] && echo true

较短形式:

# if $DIR is a directory, then print yes
[ -d "$DIR" ] && echo "Yes"

在Bash脚本中引用变量时,始终将变量括在双引号中。

if [ -d "$DIRECTORY" ]; then
    # Will enter here if $DIRECTORY exists, even if it contains spaces
fi

现在的孩子们在他们的目录名中添加空格和许多其他有趣的字符。(空间!在我的时代,我们没有花哨的空间!)有一天,这些孩子中的一个会运行你的脚本,$DIRECTORY设置为“My M0viez”,你的脚本就会崩溃。你不想这样。所以使用双引号。

根据Jonathan的评论:

如果您想创建目录,但它还不存在,那么最简单的方法是使用mkdir-p创建目录-以及路径上的任何缺失目录-如果目录已经存在,则不会失败,因此您可以使用以下方法一次性完成:

mkdir -p /some/directory/you/want/to/exist || exit 1

要检查多个目录,请使用以下代码:

if [ -d "$DIRECTORY1" ] && [ -d "$DIRECTORY2" ] then
    # Things to do
fi