É possível formatar esta amostra:
for i in string1 string2 stringN
do
echo $i
done
para algo parecido com isso:
for i in
string1
string2
stringN
do
echo $i
done
EDIT: Desculpe a confusão, não percebi que havia métodos diferentes de execução de script - sh <scriptname>
versus bash <scriptname>
e também essa coisa que não posso nomear agora - #!/bin/sh
e #!/bin/bash
:)
O uso de arrays no bash pode ajudar na legibilidade: essa sintaxe de array permite espaços em branco arbitrários entre as palavras.
Você pode escapar da quebra de linha com uma barra invertida:
Você pode escapar das novas linhas antes/depois de cada item que você faz o loop:
Ou, para este exemplo simples:
que tem o mesmo resultado.
Relacionado:
Variação usando uma
bash
matriz:Se mudar para
zsh
for uma opção:Você pode usar o
loop
comando, disponível aqui , assim:ou, se você tiver a lista em um arquivo, uma por linha:
Cuidado, porém, que ele executa uma
sh
invocação por item (para interpretar esse código enquanto o item está armazenado naITEM
variável de ambiente) e que atualmente engasga com sequências de bytes que não formam caracteres válidos em UTF-8 (mesmo que o locale charmap não é UTF-8).Mesma coisa, menos texto: