这是我尝试过的。它有效,但有时打印的字母不是$ len尺寸。
NOT NULL
对于我的程序,我需要准确打印($ len)字数。我无法做到这一点。我的shuffle功能正常。该文件的内容如下:
users_id
$ len = 4后洗牌后的预期输出
events
注意:输出可以是从文件中提取的任何随机单词。只需要指定长度$ len。
答案 0 :(得分:0)
这是你正在寻找的吗?
$ words=( $(<input.txt) )
$ fourwords() { local sp=""; local a=( "$@" ); for ((i=1;i<=4;i++)); do printf '%s%s' "$sp" "${a[@]:$((RANDOM%${#a[@]})):1}"; sp=" "; done; echo; }
$ fourwords "${words[@]}"
and and the the
$ fourwords one two three four five
two one two three
$limit
次使用$words[]
数组和简单字符串显示该函数的结果。
如果你感到被迫,你可以支持自定义字数。
$ nwords() { local limit="$1"; shift; local sp=""; local a=( "$@" ); for ((i=1;i<=limit;i++)); do printf '%s%s' "$sp" "${a[@]:$((RANDOM%${#a[@]})):1}"; sp=" "; done; echo; }
$ nwords 3 "${words[@]}"
picking getting the
$ nwords 5 {1..1000}
428 915 636 228 22