How to mkdir only if a dir does not already exist?
I am writing a shell script to run under the KornShell (ksh) on AIX. I would like to use the mkdir
command to create a directory. But the directory may already exist, in which case I do not want to do anything. So I want to either test to see that the directory does not exist, or suppress the "File exists" error that mkdir
throws when it tries to create an existing directory.
Any thoughts on how best to do this?
Try mkdir -p
:
mkdir -p foo
Note that this will also create any intermediate directories that don't exist; for instance,
mkdir -p foo/bar/baz
will create directories foo
, foo/bar
, and foo/bar/baz
if they don't exist.
If you want an error when parent directories don't exist, and want to create the directory if it doesn't exist, then you can test
for the existence of the directory first:
[ -d foo ] || mkdir foo
This should work:
$ 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
which will create the directory if it doesn't exist, but warn you if the name of the directory you're trying to create is already in use by something other than a directory.
使用-p标志。
man mkdir
mkdir -p foo
链接地址: http://www.djcxy.com/p/2890.html
上一篇: 在shell脚本中:echo shell命令执行时
下一篇: 仅当dir不存在时如何mkdir?