cria um ninho de diretórios no bash

0

Eu gostaria de uma maneira mais clara de aninhar este comando;

if [ ! -d $BACKUPDIR ]; then
  mkdir -p $BACKUPDIR
  mkdir -p $BACKUPDIR/directories
  mkdir -p $BACKUPDIR/databases
  mkdir -p $BACKUPDIR/logs
else
  :
fi
    
por eekfonky 19.10.2016 / 12:38

2 respostas

5

Com a expansão de chaves, você poderia fazer apenas

mkdir -p "$BACKUPDIR"/{directories,databases,logs}

Se você quiser ter certeza de que os subdiretórios também existem, você pode executar mkdir sem o teste. Com -p , ele não deve se queixar dos diretórios existentes, e não haverá chance de o diretório principal $BACKUPDIR existir, mas os subdiretórios estão faltando.

(É claro que, se BACKUPDIR estiver vazio, isso criará os subdiretórios no diretório raiz do sistema de arquivos. Mas presumo que você tenha definido BACKUPDIR para algum valor anterior no script. )

    
por 19.10.2016 / 12:42
1

Faça:

[ -d "$BACKUPDIR" ] || mkdir -p "$BACKUPDIR"/{directories,databases,logs}
  • [ -d "$BACKUPDIR" ] verifica se o diretório da variável BACKUPDIR contém existe

  • || faz avaliação de curto-circuito, é tratado como OR lógico

  • A expansão de chave foo/{x,y,z} é expandida para foo/x foo/y foo/z por shell

por 19.10.2016 / 12:41