我正在编写一个在AIX上的KornShell(ksh)下运行的shell脚本。我想使用mkdir命令创建一个目录。但是目录可能已经存在,在这种情况下我不想做任何事情。因此,我想要么测试目录是否不存在,要么抑制mkdir在尝试创建现有目录时抛出的“File exists”错误。
我怎样才能做到最好?
我正在编写一个在AIX上的KornShell(ksh)下运行的shell脚本。我想使用mkdir命令创建一个目录。但是目录可能已经存在,在这种情况下我不想做任何事情。因此,我想要么测试目录是否不存在,要么抑制mkdir在尝试创建现有目录时抛出的“File exists”错误。
我怎样才能做到最好?
当前回答
或者如果您想先检查是否存在:
if [[ ! -e /path/to/newdir ]]; then
mkdir /path/to/newdir
fi
-e是KornShell的存在测试。
你也可以尝试在谷歌上搜索KornShell手册。
其他回答
对“经典”解决方案的改进(Brian Campbell)-处理指向目录的符号链接的情况。
[ -d foo/. ] || mkdir foo
简单、无声、致命:
mkdir -p /my/new/dir >/dev/null 2>&1
这应该是有效的:
$ mkdir -p dir
or:
if [[ ! -e $dir ]]; then
mkdir $dir
elif [[ ! -d $dir ]]; then
echo "$dir already exists but is not a directory" 1>&2
fi
如果目录不存在,它将创建该目录,但如果您尝试创建的目录名称已被其他目录使用,则会发出警告。
或者如果您想先检查是否存在:
if [[ ! -e /path/to/newdir ]]; then
mkdir /path/to/newdir
fi
-e是KornShell的存在测试。
你也可以尝试在谷歌上搜索KornShell手册。
mkdir在Windows 8+系统上不再支持-p开关。
您可以使用此选项:
IF NOT EXIST dir_name MKDIR dir_name