É possível formatar este exemplo:
for i in string1 string2 stringN
do
echo $i
done
para algo semelhante a este:
for i in
string1
string2
stringN
do
echo $i
done
EDIT: Desculpe por confusão, não percebi que havia diferentes métodos de execução de script - sh <scriptname>
versus bash <scriptname>
e também essa coisa que eu não posso nomear agora - #!/bin/sh
e #!/bin/bash
:)
Respostas:
O uso de matrizes no bash pode ajudar na legibilidade: essa sintaxe da matriz permite um espaço em branco arbitrário entre as palavras.
fonte
sh
não é necessariamente o Bash, e especialmente não está no Debian e no Ubuntu.Você pode escapar da quebra de linha com uma barra invertida:
fonte
Você pode escapar das novas linhas antes / depois de cada item em que faz o loop:
Ou, para este exemplo simples:
que tem o mesmo resultado.
Relacionado:
Variação usando uma
bash
matriz:fonte
Se mudar para
zsh
é uma opção:fonte
Você pode usar o
loop
comando, disponível aqui , da seguinte forma:ou, se você tiver uma lista como um arquivo:
fonte
fonte
$list
string contiver caracteres inativos do nome do arquivo (list='* * * *'
), o shell poderá substituí-los por nomes de arquivos correspondentes.Mesma coisa, menos texto:
fonte
string1
etc. não são os valores literais a serem exibidos, são espaços reservados, portanto, essa abordagem não funciona.array ( … )
? apenas façafor i in string{1..7}; do echo "$i"; done
; evenprintf '%s\n' string{1..7}