获取数组 bash 的随机元素的函数

mat*_*ieu 3 arrays random bash

我知道如何从这样的数组中获取随机项:

declare -a ARRAYISO=(100 200 400 800)
echo ${ARRAYISO["$[RANDOM % ${#ARRAYISO[@]}]"]}
Run Code Online (Sandbox Code Playgroud)

显然,我可以像驴一样对每个数组执行此操作,但我想创建一个函数,它将数组作为参数并返回随机元素。

我正在尝试:

randArrayElement() {
    randElement=${$1["$[RANDOM % ${#$1[@]}]"]} 
    echo  $randElement
}
randArrayElement ARRAYISO
Run Code Online (Sandbox Code Playgroud)

但它不喜欢我的 $1...我尝试过 ", ', ` ,bash 不解释 $1 var...

anu*_*ava 5

将您的功能更改为:

randArrayElement(){ arr=("${!1}"); echo ${arr["$[RANDOM % ${#arr[@]}]"]}; }
Run Code Online (Sandbox Code Playgroud)

并将其称为:

randArrayElement "ARRAYISO[@]"
Run Code Online (Sandbox Code Playgroud)