Lendo campos de entrada separados por espaços

1

Como posso ler em POSIX bash input assim:

<name>,<tag1> <tag2> <tag3>…

eu tentei while read line;do done mas isso quer novas linhas, tudo que eu tenho são espaços.

(É a solução IFS ? Se sim, como? (não entendo completamente o IFS.))

    
por TGar 17.05.2015 / 20:28

1 resposta

3

Use uma matriz:

echo '<name>,<tag1> <tag2> <tag3>' | while IFS=" ," read -a foo; do echo ${foo[@]}; done

Saída:

<name> <tag1> <tag2> <tag3>

De man bash :

IFS: O separador de campo interno que é usado para dividir palavras após a expansão e para dividir as linhas em palavras com o comando read builtin.

    
por 17.05.2015 / 20:49