我正在编写一个在AIX上的KornShell(ksh)下运行的shell脚本。我想使用mkdir命令创建一个目录。但是目录可能已经存在,在这种情况下我不想做任何事情。因此,我想要么测试目录是否不存在,要么抑制mkdir在尝试创建现有目录时抛出的“File exists”错误。

我怎样才能做到最好?


当前回答

directory_name = "foo"

if [ -d $directory_name ]
then
    echo "Directory already exists"
else
    mkdir $directory_name
fi

其他回答

mkdir -p sam

mkdir=生成目录-p=--父级(如果存在,则无错误,根据需要创建父目录)

这是一个简单的函数(Bashshell),它允许您在目录不存在时创建目录。

#------------------------------------------#
# Create a directory if it does not exist. #
#------------------------------------------#
# Note the "-p" option in the mkdir        #
# command which creates directories        #
# recursively.                             #
#------------------------------------------#
createDirectory() {
   mkdir -p -- "$1"
}

您可以将上述函数调用为:

createDirectory“$(mktemp-d目录示例.XXXXXX)/fooDir/BarDir”

如果fooDir和BarDir不存在,上面的命令会创建它们。注意mkdir命令中的“-p”选项,它递归地创建目录。

古老而真实的

mkdir /tmp/qq >/dev/null 2>&1

将在没有任何其他解决方案所具有的竞争条件的情况下完成您想要的操作。

有时最简单(最丑陋)的解决方案是最好的。

如果不想显示任何错误消息:

[ -d newdir ] || mkdir newdir

如果要显示自己的错误消息:

[ -d newdir ] && echo "Directory Exists" || mkdir newdir

mkdir在Windows 8+系统上不再支持-p开关。

您可以使用此选项:

IF NOT EXIST dir_name MKDIR dir_name