Как получить слово x из строки - PullRequest
0 голосов
/ 27 июня 2019

Я хочу прочитать файл построчно следующим образом:

while read line;
do
  set -- $line
  c=$#  #count words and save as $c
  r=$(( RANDOM%c ))
  #here i'd like to get the word on position r from $line
done < words.txt

Я знаю, я могу получить слово 1 следующим образом:

set -- $line
echo $1

Но как я могу заменить 1 на целое число, сохраненное в $ r?

Ответы [ 2 ]

1 голос
/ 27 июня 2019

Вместо этого используйте массив :

words=($line)
echo "${words[$r]}"

Например:

$ var words
declare -a words='([0]="a" [1]="b" [2]="c")'
$ v=2
$ echo "${words[v]}"
c
$ echo "${words[v-1]}"
b
1 голос
/ 27 июня 2019

Использование косвенное обращение :

echo "${!r}"

Например:

$ set -- a b c
$ echo $2
b
$ v=2
$ echo ${!v}
b
...