Как получить доступ даже к элементам массива в Bash - PullRequest
0 голосов
/ 29 июня 2019

Я хочу отобразить четные элементы массива в bash, как этого достичь?

Ответы [ 2 ]

0 голосов
/ 29 июня 2019

Предполагая, что вы говорите об индексированном, а не об ассоциативном массиве, и вам нужны значения для четных индексов, а не для четных чисел - цикл от нуля до размера массива, увеличивающий индекс на 2 на каждой итерации.

Пример заимствования @ Camunsensei:

array=(a b c d e f g h)
for (( index=0; index<${#array[@]}; index+=2 )); do
    printf 'array[%d]=%q\n' "$index" "${array[index]}"
done
array[0]=a
array[2]=c
array[4]=e
array[6]=g

Если это не то, что вам нужно, то отредактируйте свой вопрос, включив в него пример ввода, ожидаемый результат и то, что вы уже пробовали до этого, очень поможет.

0 голосов
/ 29 июня 2019

Предполагая, что ваш массив не редкий (не содержит пробелов), Предполагая, что даже если вы начинаете считать с 1 (а не с 0, как это делает bash), вы можете сделать это с помощью цикла для индексов:

array=(a b c d e f g h)
for index in "${!array[@]}"; do
  (( index % 2 )) && echo "${array[index]}"
done
:

выходы:

b
d
f
h
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...