Значения в переменной должны быть присвоены 1: 1, как в массиве, но не рабочие

#arrays #bash #variables

#массивы #bash #переменные

Вопрос:

Предположим, у меня есть различное количество значений, хранящихся в переменной (вызываемой MY_VARIABLE ). Первые из них, то есть: 12345 67890 …

Теперь я хотел бы просмотреть этот список значений и присвоить их 1:1 переменной на основе массива следующим образом:

 MY_ARRAY[0]=12345   
MY_ARRAY[1]=67890
...
 

Как этого можно достичь?

Пожалуйста, обратите внимание: при попытке выполнить это с помощью цикла происходит сбой, поскольку MY_ARRAY[0] отображаются все значения (12345, 67890, …) внутри.

Моя версия bash: GNU bash, версия 3.2.39(1)-release (i486-pc-linux-gnu)

Ответ №1:

 MY_ARRAY=( $MY_VARIABLE )
 

Разделит значения, разделенные пробелами, в MY_ARRAY с начальным индексом в 0.

Вы просматриваете значения массива с помощью:

 ${MY_ARRAY[0]} ${MY_ARRAY[1]) etc...
 

Просмотр всех значений в массиве одновременно с:

 ${MY_ARRAY[@]}
 

Ответ №2:

Вы можете использовать read -a :

 MY_VARIABLE='12345 67890'
read -a arr <<< "$MY_VARIABLE"
printf "%sn" "${arr[@]}"
12345
67890