Я действительно не нахожу решение этой проблемы: Скажем, у меня есть переменная с несколькими строками, каждая строка должна быть одним аргументом в конце.Bash: Вставить переменное содержимое в подстановку команд в качестве аргументов - как правильно указывать?
line 1
line two
...
Я только получить эти данные во время выполнения, но это должно быть построить, как это с помощью команды:
answer="$(dialog --menu 'Menu title' 0 0 0 'line 1' - 'line two' - ... 3>&1 1>&2 2>&3)"
(. Данные должны быть разделены, - но это не проблема)
Я думаю, что я действительно пробовал все возможные комбинации, но это не сработает. Я проверил этот сайт уже, но я> думаю, < не предлагает решение моей проблемы: http://mywiki.wooledge.org/BashFAQ/050
Должен ли я попытаться переключить расщепление слов?
Это мой код, как сейчас:
list=""
while read p; do
list="$list '$p' - "
done <<< $line_separated_input
answer="$(dialog --menu 'Chosse sth' 0 0 0 $list 3>&1 1>&2 2>&3)"
Использование массива также не работает (как предложено здесь в (5): https://superuser.com/a/360986) :(Как остановить софистика внутри цитируемого материала , даже если цитируемый материал вставляется из-за подстановки переменной
Edit: Спасибо всем, цитируя $line_separated_input
был частью решения, используя его вместе со списком массива вместо переменной, наконец, решить мою проблему Вы можете проверить.. для вас, наличие дополнительной подстановки команды делает вещи har der:
> list="'a a' 'b c'"; echo "$(echo $list)"
'a a' 'b c'
> list="'a a' 'b c'"; echo "$(echo "$list")"
'a a' 'b c'
Оба не имеют предполагаемого выхода. Это достигается только в том случае, если я делаю следующее:
> list=('a a' 'b c'); echo "$(echo "${list[@]}")"
a a b c
Tadaa! Спасибо всем :)
Будет ли 'tr '\ n' '-' <<<" $ line_separated_input "работать для вас? – mustaccio
Просто используйте цитаты !!! '... done <<<" $ line_separated_input "' *** с кавычками !!! *** –