Dis*_*ame 4 shell-script files test mkdir
我有一个包含一些文件夹的文件夹,这些文件夹经常移动,所以我制作了一个脚本来查看它们是否存在,如果不存在则创建它们。这就是我所做的(我虽然会)实现它:
if [ ! -f "$DIR/0folder" ]
then
mkdir "$DIR/0folder"
fi
Run Code Online (Sandbox Code Playgroud)
但是,即使0folder
已经存在,它仍然试图让它mkdir
告诉我。像这儿;
mkdir: /Allfoldersgoeshere/subfolder/0folder: File exists
Run Code Online (Sandbox Code Playgroud)
为什么?它应该忽略它,因为它已经存在?
Tim*_*tin 12
在-f
您的测试是检查是否FILE
存在且是一个普通文件。你需要的是-d
测试是否FILE
存在并且是一个目录。
if [ ! -d "$DIR/0folder" ]
then
mkdir "$DIR/0folder"
fi
Run Code Online (Sandbox Code Playgroud)
但是,检查目录是否存在不是强制性的。根据mkdir
我们看到的手册页如下
man mkdir | grep -A1 -- -p
-p, --parents
no error if existing, make parent directories as needed
Run Code Online (Sandbox Code Playgroud)
但是,如果FILE
存在并且是常规文件, mkdir -p
则会失败
mkdir: /Allfoldersgoeshere/subfolder/0folder': Not a directory.
Run Code Online (Sandbox Code Playgroud)
在这种情况下file
,directory
在创建目录之前需要处理预期的。