【问题标题】:Shuffling doesn't actually save into array? [duplicate]洗牌实际上并没有保存到数组中? [复制]
【发布时间】:2019-04-07 05:06:11
【问题描述】:

我是 shell 脚本的新手,并且遇到了 shuf 函数的问题。 这是我的代码

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

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

echo ${myarray[2]}

这实际上并没有在第三个位置打印随机排序的字符。相反,它将始终打印“C”。我怎样才能真正保存排序的数组?我需要再做一个数组吗?

非常感谢

【问题讨论】:

  • 添加一个shebang,然后将您的脚本粘贴到那里:shellcheck.net

标签: bash


【解决方案1】:

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

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

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

【讨论】:

  • ...并且=周围不能有空格。
猜你喜欢
  • 2022-07-29
  • 1970-01-01
  • 2017-11-05
  • 1970-01-01
  • 1970-01-01
  • 2013-08-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多