Считать содержимое файла (с пробелами) в массив - PullRequest
2 голосов
/ 05 марта 2010

Я создаю сценарий оболочки, и у меня есть такой файл, который называется expressions.txt:

"Ploink Poink"
"I Need Oil"
"Some Bytes are Missing!"
"Poink Poink"
"Piiiip Beeeep!!"
"Whoops! I'm out of memory!"
"1 + 1 = 3"
"Please fix my bugs!"
"Goeiedag!"
"Hallo!"
"Guten Tag!"
"Hyvää Päivää!"
"Добрый день"
"!สวัสดี"
"Bonjour!"
"!مرحبا"
"!שלום"
"Γειά!"

У меня есть этот код в robot.sh:

expressions=( $(cat expressions.txt) )

# Get random expression...
selectedexpression=${expressions[$RANDOM % ${#expressions[@]}]}

# Write to Shell
echo $selectedexpression

Однако это разделяет содержимое файла по пробелам, а не по кавычкам, поэтому выходные данные могут выглядеть примерно так: "Ploink, Need или fix. Но я хочу полные предложения. Есть ли способ сделать это? Спасибо

О, я использую оболочку #!/bin/sh.

Ответы [ 2 ]

2 голосов
/ 05 марта 2010

Это будет работать с bash, возможно с sh:

OLDIFS="$IFS"
IFS=$'\n'
expressions=()
while read line
do
  expressions=("${expressions[@]}" "$line")
done < expressions.txt
IFS="$OLDIFS"
0 голосов
/ 06 марта 2010

используйте (г) awk или nawk на Solaris

awk 'BEGIN{srand() }
{
  lines[++d]=$0    
}END{
  RANDOM = int(1 + rand() * d)
  print lines[RANDOM]
}' expression.txt
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...