混洗实际上没有保存到数组中吗?

时间:2019-04-06 20:53:47

标签: bash

我是Shell脚本的新手,并且shuf函数有问题。 这是我的代码

declare -a myarray=( 'A' 'B' 'C' 'D' 'E' 'F' )
myarray = $(shuf -e "${myarray[@]}")
echo "$myarray"

我创建一个包含六个字符的数组。然后,我随机将它们洗牌并打印出来。我的问题是,如果要添加另一行,例如

echo ${myarray[2]}

这实际上不会在第3个位置打印随机排序的字符。相反,它将始终打印“ C”。我怎样才能真正保存排序后的数组?我需要制作另一个数组吗?

非常感谢您

1 个答案:

答案 0 :(得分:0)

bash中的数组用()定义。 Bash不是静态键入的,因此将myarray设置为等于某些字符输出即可做到这一点,使其成为您可以用echo $myarray回显以查看完整输出的字符串。

您需要将输出包装在括号中,以明确表明您的新myarray也应该是数组:

myarray=($(shuf -e "${myarray[@]}"))