Не удается получить доступ к значению хеш-массива, назначенному в цикле for вне его.
declare -A numbers
for((i=0;i<5;i++)){
randNum=$RANDOM
numbers[i]=$randNum
echo ${numbers[i]}
}
echo ${numbers[0]}
Я могу напечатать значение хеш-массива внутри цикла. Но я рассчитываю сделать это за его пределами.
Обратите внимание, что вы используете недокументированный альтернативный синтаксис для цикла for. Отдайте предпочтение for ((...)); do ...; done.
число != числа
Для меня это работает, попробуйте поменять местами % на $ для генерации случайного числа
Замените оба [i] на [$i].
Вы уверены, что хотите использовать -A, а не -a?



Несколько изменений в вашем сценарии сделают
#!/bin/bash
declare -a numbers # once numbers everywhere numbers
# Thanks @cyrus for the comment above, well you need an indexed array,
# not an associative one.
for((i=0;i<5;i++))
do # do-done is the preferred syntax
randNum=${RANDOM} # %RANDOM% is Windows command line stuff
# alternatively you could use a range say ${RANDOM:0:2}
# for values between 10^0 and 10^2, and so
echo $randNum
numbers[i]=$randNum
echo ${numbers[i]}
done
echo "After loop"
echo ${numbers[0]} # Should work
В синтаксисе {} с for-loop прочитайте ответ это.
весь скрипт пожалуйста. (с декларациями)