shell script echo text name para loop em múltiplos textos

2

Estou tentando fazer isso

text1="word1 word2 word3"
text2="word4 word5"
text1="word6 word7 word8"

for var in $text1 $text2 $text3
do
  echo $var" in "(__?__)
done

saída esperada

word1 in text1
word2 in text1
...
word4 in text2
...
word8 in text3
    O script
  1. será executado com traço - > então não há bashisms permitidos
  2. Estou ciente de que o shell não é uma ferramenta para processamento de texto
  3. o laço concatena $ text1 $ text2 $ text3 antes de iterar ou não?
por Jean Molinier 22.06.2016 / 02:06

1 resposta

1
text1="word1 word2 word3"
text2="word4 word5"
text3="word6 word7 word8"
set -f #disable globbing in unquoted var expansions (optional) 
for i in text1 text2 text3; do
    eval "j=\$$i" #i holds name, $j holds the fields
    for k in $j; do #k holds a field
        echo "$k in $i"
    done
done

Saída:

word1 in text1
word2 in text1
word3 in text1
word4 in text2
word5 in text2
word6 in text3
word7 in text3
word8 in text3
    
por 22.06.2016 / 02:33