![Скрипт оболочки выводит имя текста для циклического повторения нескольких текстов](https://rvso.com/image/89135/%D0%A1%D0%BA%D1%80%D0%B8%D0%BF%D1%82%20%D0%BE%D0%B1%D0%BE%D0%BB%D0%BE%D1%87%D0%BA%D0%B8%20%D0%B2%D1%8B%D0%B2%D0%BE%D0%B4%D0%B8%D1%82%20%D0%B8%D0%BC%D1%8F%20%D1%82%D0%B5%D0%BA%D1%81%D1%82%D0%B0%20%D0%B4%D0%BB%D1%8F%20%D1%86%D0%B8%D0%BA%D0%BB%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B3%D0%BE%20%D0%BF%D0%BE%D0%B2%D1%82%D0%BE%D1%80%D0%B5%D0%BD%D0%B8%D1%8F%20%D0%BD%D0%B5%D1%81%D0%BA%D0%BE%D0%BB%D1%8C%D0%BA%D0%B8%D1%85%20%D1%82%D0%B5%D0%BA%D1%81%D1%82%D0%BE%D0%B2.png)
Я пытаюсь это сделать
text1="word1 word2 word3"
text2="word4 word5"
text1="word6 word7 word8"
for var in $text1 $text2 $text3
do
echo $var" in "(__?__)
done
ожидаемый результат
word1 in text1
word2 in text1
...
word4 in text2
...
word8 in text3
- скрипт будет выполнен с тире ->, поэтому башизмы не допускаются
- Я знаю, что shell не является инструментом для обработки текста.
- объединяет ли цикл $text1 $text2 $text3 перед итерацией или нет?
решение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
Выход:
word1 in text1
word2 in text1
word3 in text1
word4 in text2
word5 in text2
word6 in text3
word7 in text3
word8 in text3