나는 이 명령을 중첩하는 더 깔끔한 방법을 원합니다.
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