#bash
#bash
Вопрос:
Я хочу заполнить массив из вывода команды, сохранив кавычки вокруг элементов следующим образом:
$ array1=("one.1 one.2" two)
$ echo ${array1[0]}
one.1 one.2
Но любой вывод команды дает другой результат, реплицируемый с echo
помощью here:
$ array1=($(echo '"one.1 one.2" two'))
$ echo ${array1[0]}
"one.1
Ответ №1:
Это можно решить с помощью eval
:
$ eval "array1=("$(echo '"one.1 one.2" two')")"
$ echo ${array1[0]}
one.1 one.2
Комментарии:
1. Спасибо, это работает! Я думал об использовании
eval
, но, видимо, я поместил его не в то место, например, непосредственно перед командой sub withecho
. Это не сработало.2. @srakitnican Полезный совет по использованию
eval
: вы создаете строку, которая будет выполнена позже, как будто она была вставлена непосредственно в скрипт. Если вы не уверены в построенной строке, просто заменитеeval
наecho
, и она будет показана.