这两个shell命令之间有什么区别?
有两个shell命令:这两个shell命令之间有什么区别?,shell,unix,scripting,Shell,Unix,Scripting,有两个shell命令: [[ ! -d $TRACEDIR/pattrace/rpt/.tracking ]] && mkdir $TRACEDIR/pattrace/rpt/.tracking [[ ! -d $TRACEDIR/pattrace/rpt/.tracking ]] && mkdir -p $TRACEDIR/pattrace/rpt/.tracking 显然,这些命令之间的唯一区别是-p标志。但在这种情况下,这个标志做了什么 谢谢 mkdi
[[ ! -d $TRACEDIR/pattrace/rpt/.tracking ]] && mkdir $TRACEDIR/pattrace/rpt/.tracking
[[ ! -d $TRACEDIR/pattrace/rpt/.tracking ]] && mkdir -p $TRACEDIR/pattrace/rpt/.tracking
显然,这些命令之间的唯一区别是-p
标志。但在这种情况下,这个标志做了什么
谢谢
mkdir
使用-p
选项将创建指定路径的所有必要父目录(如果不存在)(请参阅)。此外,如果目录本身已经存在,则使用-p
不会出现错误
在您的特定情况下,第一个命令可能会失败,因为对完整路径的测试是不够的。如果只有$TRACEDIR/
存在,测试也将失败,但是后续的mkdir
将失败,因为它需要$TRACEDIR/pattrace/rpt/
存在
第二个命令将起作用,因为
mkdir-p
也会创建“中间”所有缺少的目录。mkdir
使用-p
选项将创建指定路径的所有必要父目录,如果它们不存在(请参阅)。此外,如果目录本身已经存在,则使用-p
不会出现错误
在您的特定情况下,第一个命令可能会失败,因为对完整路径的测试是不够的。如果只有$TRACEDIR/
存在,测试也将失败,但是后续的mkdir
将失败,因为它需要$TRACEDIR/pattrace/rpt/
存在
第二个命令将起作用,因为mkdir-p
也会在“中间”创建所有缺少的目录。来自:
换句话说,如果所需的目录不存在,它们将根据需要创建。如果目录已经存在,则不会导致错误
这是一个寻找的好地方(当然除了使用谷歌之外)来自:
换句话说,如果所需的目录不存在,它们将根据需要创建。如果目录已经存在,则不会导致错误
这是一个寻找的好地方(当然除了使用谷歌)
-p, --parents
no error if existing, make parent directories as needed