Se por algum motivo você não quiser apenas usar a expansão de contraventamento (veja também abaixo), pode considerar:
seq 5 | xargs -I N mkdir nameN
Isso cria name1
, name2
, name3
, name4
e name5
. Ele funciona mesmo se o seu shell não suportar a expansão de chave (mas bash
). O comando xargs
constrói e executa comandos. Esse comando específico xargs
executa comandos como mkdir nameN
, mas com N
substituído por cada palavra da entrada (que é canalizada de seq
). Corra man xargs
ou leia esta página para mais informações sobre a opção -I
.
Se isso é para uma tarefa de casa, talvez você não tenha permissão para usar um terceiro comando ( xargs
). Mas na "vida real", é menos provável que você tenha essa restrição. Além disso, se você está fazendo isso para fins de aprendizado, é uma oportunidade de aprender o comando xargs
- se você ainda não o conhece - o que é útil em uma variedade de situações.
Você também pode usar um loop de shell, conforme AlexP sugeriu (%código%). O for d in $(seq 5); do mkdir name$d; done
loop usa a sintaxe for
$(
para executar substituição de comandos para obter a lista )
de 1 2 3 4 5
, em seguida, usa expansão de parâmetro ( seq
) para formar o nome do diretório em cada comando $d
.
Você deve estar ciente de que todos esses métodos se baseiam na ausência de espaço em branco nos nomes de diretório, embora seja possível modificá-los para que não ocorram.
Mas você está usando mkdir
e, como muitos shells , ele suporta expansão de brace . Agora, talvez você precise que seu script seja portátil para shells que não (como bash
). Se é isso que você precisa, você não deve usar a expansão de chaves. Caso contrário, você deve seguir a recomendação de Jeff Schaller de simplesmente escrever dash
.