Этот вопрос кажется не по теме, потому что речь идет о ошибка, которая теперь решена. Ответ не должна быть соблюдена, поскольку в случае применения больше не существует. Он здесь только как историческая ценность, и должны рассматриваться как таковые. Это может быть полезно, как опыт для той же проблемы в будущем, но ответ не может быть точным. Да, мой плохой. Я хотел сказать, Изумрудное. Спасибо, но я ищу мысли на этот счет определенное подмножество само-плагиат с пониманием того, что "традиционные" самоплагиатом уже широко считается неэтичным. Еще раз спасибо за ваш ответ. Я очистил историю и т. д. форма первой пули. 2-й пули не возможно, так как в COM.яблоко.Сафари.папка savedSate не было, возможно, потому, что я очистил все с первой строки? Я буду пусть U знать, если проблема повторяется. Еще раз спасибо!

Я нашел хорошее решение для этого (я думаю, что это будет работать для любого входного массива), он использует функции printf "%д" характеристика.

Вы можете просто написать :

КМД=(
 функции "printf '%з\п'"
 "Foo бар"
 "баз взрыва"
)

содержащие="$(е "%м " "${cmd и[@]}")"

Это дает :

\ е \'%з\\п\ с' Foo\ бар зэа\ Банг

Объяснение

Функции printf "%м команда" убегает символы, которые используются в оболочке :

%к аргумент печатается в формате, который может быть использован в качестве входных оболочки, спасаясь непечатаемых символов синтаксис с предложенным в POSIX $".

Источник : человек Е

С помощью "%к ", все элементы массива будут напечатаны и правильно сбежал, а потому что есть пробел после , все элементы будут отделяться друг от друга пробелами.