Faz o loop sobre uma string em zsh e Bash

4

Gostaria de converter este loop de Bash:

x="one two three"

for i in ${x}
do
    echo ${i}
done

de maneira a trabalhar tanto com o Bash quanto com o zsh

Esta solução funciona:

x=( one two three )

for i in ${x[@]}
do
    echo ${i}
done

De qualquer forma, estou modificando x de uma string para uma matriz.

Existe uma maneira de fazer o loop de $x em zsh quando é uma string e de uma maneira compatível com o Bash?

Eu sei sobre o zsh setopt shwordsplit para emular o Bash, mas não posso configurá-lo ad hoc para o loop, porque ele não funcionaria no Bash.

'

    
por antonio 11.07.2016 / 00:22

1 resposta

5
if type emulate >/dev/null 2>/dev/null; then emulate ksh; fi

No zsh, isso ativa opções que o tornam mais compatível com o ksh e o bash, incluindo sh_word_split . Em outros shells, emulate não existe, então isso não faz nada.

    
por 11.07.2016 / 00:38