Подтвердить что ты не робот

Как инициализировать массив bash с выходом, переданным из другой команды?

Нужно ли в любом случае передать вывод команды, которая содержит список чисел (каждый номер в отдельной строке) и инициализировать массив bash с этими числами?

Подробнее: В нем перечислены 3 списка изменений, которые были представлены в следующем диапазоне дат. Затем выход передается на "cut", чтобы фильтровать его далее, чтобы получить только номера списков изменений.

p4 changes -m 3 -u edk -s created @2009/05/01, @now | cut -d '' -f 2

например.:

422311

543210

444000

Как можно сохранить этот список в массиве bash?

4b9b3361

Ответ 1

Вы можете выполнить команду под тиками и установить Array как,

ARRAY=(`command`)

В качестве альтернативы вы можете сохранить вывод команды в файл и пометить ее аналогично,

command > file.txt
ARRAY=(`cat file.txt`)

Или просто одна из следующих форм, предложенная в комментариях ниже,

ARRAY=(`< file.txt`)
ARRAY=($(<file.txt))

Ответ 2

Если вы используете bash 4+, для этого есть специальная команда: mapfile, также известная как readarray, поэтому вы можете заполнить свой массив следующим образом:

declare -a a
readarray -t a < <(command)

для более портативной версии вы можете использовать

declare -a a
while read i; do
  a=( "${a[@]}" "$i" )
done < <(command)