Я хочу получить доступ к переменной индекса массива во время цикла по массиву в моем сценарии оболочки bash.
myscript.sh#!/bin/bash
AR=('foo' 'bar' 'baz' 'bat')
for i in ${AR[*]}; do
echo $i
done
Результат приведенного выше сценария:
foo
bar
baz
bat
Результат, который я ищу:
0
1
2
3
Как мне изменить мой сценарий, чтобы добиться этого?
bash
shell
shell-script
Mowzer
источник
источник
"${array[*]}"
вместо"${array[@]}"
. Использование*
вместо@
более или менее обрабатывает его как строку вместо массива.Ответы:
Вы можете сделать это, используя Список ключей массива . Со
bash
страницы руководства :Для вашего примера:
Это приводит к:
Обратите внимание, что это также работает для непоследовательных индексов:
Это приводит к:
источник
printf "$i=(${AR[i]})\n"
илиecho "$i=(${ARi]})"
оба дают немного больше, показывая, как получить key & var, но, строго говоряecho "$i"
, ответили бы на OP. Остальное "баш фу" :)В дополнение к ответу Джорданма вы также можете выполнить
C
цикл « Мне нравится» вbash
:источник
Вы можете сделать что-то вроде этого:
выход:
источник