如何从 posix shell 中的字符串中获取随机单词?

How can I get a random word from a string in posix shell?

我在 posix 脚本中有一个包含几个单词的字符串:

mystr="word1 word2 word3"

我想随机选一个词。所以我最后做了:

echo "$mystr" | cut -d " " -f "$(shuf -i 1-"$(echo "$mystr" | wc -w)" -n 1)"

虽然这看起来很难看。有更好的做法吗?

下面介绍如何使用 awk 将字符串拆分为数组,然后打印数组的随机元素。

echo "word1 word2 word3" |
  awk 'BEGIN { srand() }
             { split([=10=],a); print a[1+int(rand()*length(a))] }'

在 busybox 上测试过,但应该可以在任何 POSIX 系统上工作。