我想要一种更干净的方式来嵌套这个命令;
if [ ! -d $BACKUPDIR ]; then
mkdir -p $BACKUPDIR
mkdir -p $BACKUPDIR/directories
mkdir -p $BACKUPDIR/databases
mkdir -p $BACKUPDIR/logs
else
:
fi
答案1
通过大括号扩展,你可以这样做
mkdir -p "$BACKUPDIR"/{directories,databases,logs}
如果您想确保子目录也存在,则可以直接运行mkdir
而不进行测试。有了-p
它,就不应该抱怨现有目录,并且不会有主目录$BACKUPDIR
存在但子目录丢失的情况。
(当然,如果BACKUPDIR
为空,这将(尝试)在文件系统根目录中创建子目录。但我假设您已BACKUPDIR
在脚本的前面设置了某个值。)
答案2
做:
[ -d "$BACKUPDIR" ] || mkdir -p "$BACKUPDIR"/{directories,databases,logs}
[ -d "$BACKUPDIR" ]
检查变量BACKUPDIR
包含的目录是否存在||
进行短路评估,将其视为逻辑或大括号扩展被shell
foo/{x,y,z}
扩展为foo/x foo/y foo/z