Bash - Проблемы с созданием массива из выходных данных команды, в которой есть цитируемый текст с пробелами

Для создаваемого мной сценария мне нужно преобразовать вывод команды в массив. Для упрощения я привел пример с использованием echo:

arr=( $(echo '"test example" "test2 example"') )

Я хочу, чтобы первый элемент массива был

test example

, но при этом:

echo ${arr[0]}

я получаю

"test

Что мне нужно сделать, чтобы получить результат Я хочу?

0
01.04.2017, 12:40
2 ответа

Предположим, что echo не выдает правильный вывод, как команда, поэтому необходимо включить sed

mapfile -t arr < <(
    echo '"test example1" "test2 example2"' |
    sed 's/" "/"\n"/g'
)
1
28.01.2020, 02:46
eval "arr=( $(echo '"test example" "test2 example"') )"

echo "${arr[0]}"

for e in "${arr[@]}"; do
   echo "<$e>"
done

output

test example

<test example>
<test2 example>
1
28.01.2020, 02:46

Теги

Похожие вопросы