Primeiro, é uma má idéia para analisar a saída de ls
. Em vez disso, use globbing (veja a seção FILENAME GENERATION em man zshexpn
), no seu caso
for f in *; do
echo ${f}-SUP
done
A razão pela qual ambos os seus exemplos parecem funcionar no bash (desde que não haja espaços em branco nos seus nomes de arquivo, etc.) é que o bash divide os parâmetros em espaços em branco por padrão,
qual zsh
não faz. Você também pode obter esse comportamento em zsh
com essa opção:
setopt SH_WORD_SPLIT
Explicação de man zshoptions
SH_WORD_SPLIT Causes field splitting to be performed on unquoted parameter expansions. Note that this option has nothing to do with word splitting. (See the section 'Parameter Expansion'.)
Mas por favor leve os conselhos dados no link acima a sério!