Очень простая проблема с bash. У меня есть массив, который выглядит так:
my_array=(1 2 3)
Однако, когда я печатаю массив или перебираю его, bash ссылается только на первый элемент.
echo $my_array
1
for element in my_array ; do
echo $element
done
1
Как я могу получить доступ ко всем элементам?
Вам нужно использовать правильный синтаксис. Чтобы отобразить все элементы, используйте
for element in "${my_array[@]}" ; do
printf '%s\n' "$element"
done
$my_array
то же, что ${my_array[0]}
.
Кроме того, цикл в исходном вопросе выводит my_array
, а не 1
. Без $
это не переменная, это просто слово.
Если вы добавите Bash shebang, Шеллчек идентифицирует проблемы с фрагментами кода. См. (первый абзац) Stack Overflow 'bash' Информационная страница для получения дополнительной информации о ShellCheck.