Я новичок в сценарии оболочки, и у меня проблема с функцией shuf. это мой код
declare -a myarray=( 'A' 'B' 'C' 'D' 'E' 'F' )
myarray = $(shuf -e "${myarray[@]}")
echo "$myarray"
Я делаю массив, содержащий шесть символов. Затем я перемешиваю их случайным образом и распечатываю. Моя проблема в том, что если бы я добавил еще одну строку, например
echo ${myarray[2]}
На самом деле это не печатает случайно отсортированный символ в 3-й позиции. Вместо этого он всегда будет печатать «C». Как я могу сохранить отсортированный массив? Мне нужно сделать еще один массив?
Спасибо большое
Массивы в bash определяются с помощью ()
. Bash не является статически типизированным, поэтому установка myarray
равной некоторому выводу символов сделает именно это, сделав строку, которую вы можете повторить с помощью echo $myarray
, чтобы увидеть полный вывод.
Вам нужно заключить свой вывод в круглые скобки, чтобы bash понял, что ваш новый myarray
также должен быть массивом:
myarray=($(shuf -e "${myarray[@]}"))
... и вокруг не должно быть пробелов =
.
Добавьте шебанг и вставьте туда свой скрипт: shellcheck.net