我正在编写一个在AIX上的KornShell(ksh)下运行的shell脚本。我想使用mkdir命令创建一个目录。但是目录可能已经存在,在这种情况下我不想做任何事情。因此,我想要么测试目录是否不存在,要么抑制mkdir在尝试创建现有目录时抛出的“File exists”错误。
我怎样才能做到最好?
我正在编写一个在AIX上的KornShell(ksh)下运行的shell脚本。我想使用mkdir命令创建一个目录。但是目录可能已经存在,在这种情况下我不想做任何事情。因此,我想要么测试目录是否不存在,要么抑制mkdir在尝试创建现有目录时抛出的“File exists”错误。
我怎样才能做到最好?
当前回答
如果不想显示任何错误消息:
[ -d newdir ] || mkdir newdir
如果要显示自己的错误消息:
[ -d newdir ] && echo "Directory Exists" || mkdir newdir
其他回答
directory_name = "foo"
if [ -d $directory_name ]
then
echo "Directory already exists"
else
mkdir $directory_name
fi
即使目录存在,mkdir foo也能工作。要使其仅在名为“foo”的目录不存在时工作,请尝试使用-p标志。
例子:
mkdir -p foo
这将仅在名为“foo”的目录不存在时创建该目录。:)
如果不想显示任何错误消息:
[ -d newdir ] || mkdir newdir
如果要显示自己的错误消息:
[ -d newdir ] && echo "Directory Exists" || mkdir newdir
或者如果您想先检查是否存在:
if [[ ! -e /path/to/newdir ]]; then
mkdir /path/to/newdir
fi
-e是KornShell的存在测试。
你也可以尝试在谷歌上搜索KornShell手册。
古老而真实的
mkdir /tmp/qq >/dev/null 2>&1
将在没有任何其他解决方案所具有的竞争条件的情况下完成您想要的操作。
有时最简单(最丑陋)的解决方案是最好的。