我正在创建一个Shell脚本,我有一个名为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
。但我想要完整的句子。有没有办法做到这一点?感谢
哦,我使用的shell是#!/bin/sh
。
答案 0 :(得分:2)
这适用于bash
,可能与sh
:
OLDIFS="$IFS"
IFS=$'\n'
expressions=()
while read line
do
expressions=("${expressions[@]}" "$line")
done < expressions.txt
IFS="$OLDIFS"
答案 1 :(得分:0)
在Solaris上使用(g)awk或nawk
awk 'BEGIN{srand() }
{
lines[++d]=$0
}END{
RANDOM = int(1 + rand() * d)
print lines[RANDOM]
}' expression.txt