Dividir palavras de 'read' e armazenar em array?

2

Como posso obter dados de read , dividir as palavras por espaços e depois colocar essas palavras em uma matriz?

O que eu quero é:

$ read sentence
this is a sentence
$ echo $sentence[1]
this
$ echo $sentence[2]
is
(and so on...)

Estou usando isso para processar frases em inglês para uma aventura de texto.

    
por SpecialBomb 19.05.2016 / 21:17

2 respostas

6

Se você estiver usando bash , seu comando read tem uma opção -a para isso.

De help read

Options:
  -a array  assign the words read to sequential indices of the array
        variable ARRAY, starting at zero

Então

$ read -a s
This is a sentence.

Observe que a matriz resultante é indexada como zero, então

$ echo "${s[0]}"
This
$ echo "${s[1]}"
is
$ echo "${s[2]}"
a
$ echo "${s[3]}"
sentence.
$ 
    
por 19.05.2016 / 22:42
1

Uma resposta semelhante à de @steeldriver

#!/bin/bash
printf "Input text:" && read UI ;
read -a UIS <<< ${UI} ;
X=0 ;
for iX in ${UIS[*]} ; do printf "position: ${X}==${iX}\n" ; ((++X)) ; done ;
    
por 19.05.2016 / 22:48