Intereting Posts
alias su = 'su -' in .kshrc Запуск тысяч параллельных фоновых процессов в сценарии bash Как установить пакеты на флешку IP-доступ в порядке, но ping не работает В чем разница между раскладкой клавиатуры X11 и разворачиванием виртуальной консоли tmp / krb5cc_ не очищается регулярно (кеширование учетных данных кебероса) Что означает «ссылка № 1»? Использование буквальных пустых фигурных скобок {} внутри команды sed из find -exec Запись на FIFO с несколькими процессами Есть ли простой способ для установки бинарных сборок glibc? Как создать скрипт с обратным действием Linux Mint Petra (16) Обновление Java от JRE 7 до JRE 8 разбивает графическую систему? Использование сценария оболочки для выбора статической конфигурации IPv4 в соответствии с адресом маршрутизатора Ошибка при установке VLC на Fedora 20 Как сделать принтер с точечной матрицей печатать каждую строку 'tail -f'

Разделить слова от `read` и хранить до массива?

Как я могу принимать ввод от read , разбивать слова вверх пробелами и затем помещать эти слова в массив?

Я хочу:

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

Я использую это для обработки английских предложений для текстового приключения.

Если вы используете bash , для его команды read есть опция -a .

Из help read

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

Так

 $ read -as This is a sentence. 

Обратите внимание, что результирующий массив нулевым индексом, поэтому

 $ echo "${s[0]}" This $ echo "${s[1]}" is $ echo "${s[2]}" a $ echo "${s[3]}" sentence. $ 

Аналогичный ответ от @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 ;