Я действительно не нахожу решения этой проблемы: скажем, у меня есть переменная с несколькими строками, каждая строка должна быть одним аргументом в конце.
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. ) :( Как остановить разбиение слов внутри цитируемого материала, даже если этот цитируемый материал вставлен из-за подстановки переменных?
Редактировать: спасибо всем, цитирование $line_separated_input
было частью решения. Использование его вместе со списком массивов вместо переменной, наконец, решило мою проблему. Вы можете проверить сами, наличие дополнительной подстановки команд усложняет задачу:
> 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
Тадаа! Спасибо всем :)
tr '\n' '-' <<<"$line_separated_input"
? - person mustaccio   schedule 28.12.2016... done <<< "$line_separated_input"
с кавычками!!! - person gniourf_gniourf   schedule 28.12.2016