Problema em questão
Estou tentando escrever um script bash para criar rapidamente uma estrutura de diretório. Esta é uma tentativa de aprender mais sobre como manipular arrays, variáveis e usar loops. Meu script funciona para verificar a existência de um diretório e criar pastas. O problema que estou tendo é criar um terceiro nível de diretórios nas duas primeiras camadas.
Metas
Eu quero ser capaz de escrever um script bash que crie uma estrutura de diretório, ~/a/a/a, ~/a/a/b, ~/a/a/c,...,~/a/z/z
por exemplo. Isso deve ser flexível para que eu possa usar qualquer tipo de array ou variável que seja adequado.
Aqui está o que eu trabalhei até agora:
#!/bin/bash
array_0=(one two three four five)
array_1=(x y z)
if [ ! -d "directory" ]; then
mkdir directory
fi
for array_0 in "${array_0[@]}"
do
mkdir ~/directory/$array_0/
done
if [ -d "~/directory/$array_0/" ]; then
for array_1 in "${array_0[@]}"
do
mkdir ~/directory/$array_0/$array_1
done
fi
exit 0
Problema
O erro que recebo émkdir: cannot create directory '/home/user/directory/one/x' : No such file or directory
Outras tentativas neste script me permitem criar ~/directory
e ~/directory/one, ~/directory/two,..., ~/directory/five
sem falhar, mas não o próximo nível, ou seja, /directory/one/x
e etc.
Como posso fazer o script da criação dessa estrutura de diretório? Isso é possível usando arrays ou existe outro método?
Para referência, tentei implementar esta postagem e os elementos desta postagem , mas não tive sorte ao criar a estrutura de diretórios que desejo.
Você poderia usar um loop de matriz aninhada, como este
Ou, se você não se importa em evitar o uso de arrays, mas sim em usar listas de expansão, este único comando fará quase a mesma coisa: