私はこのコマンドを入れ子にするよりきれいな方法が欲しいです。
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
変数に含まれるディレクトリが存在することを確認してください。||
段落評価を実行し、それを論理ORとして扱います。中かっこ拡張は
foo/{x,y,z}
シェルによって次に拡張されます。foo/x foo/y foo/z