Как работать с переменными в переменных и сохранять логику кавычек - PullRequest
0 голосов
/ 06 мая 2019

Среда: Ubuntu 18.04. Я пытаюсь запустить xfce4-терминал с несколькими вкладками. Количество вкладок изменится, поэтому мне нужно построить строку, чтобы все аргументы передавались в xfce4-терминал.

#!/bin/bash
xfce4Args="--disable-server --hold --minimize" 
Acq="ls -R"
OPTIONS="-R"
Ser="--title=Pre --command=ls ${OPTIONS}"
xfce4-terminal  ${xfce4Args} --title="Acq" --command="${Acq}" \
--tab ${xfce4Args} "${Ser}" 

Аргумент --command должен находиться в двойных кавычках, чтобы xfce4-терминал видел в нем одно аргументное событие, хотя он может содержать пробелы. Так что для --command = "$ {Acq}" это работает нормально. Для второй вкладки $ {Ser} не работает. Если Ser не содержит --title = Per в качестве разделителя пробелов, он работает, потому что «$ {Ser}» становится единственным понятным аргументом. Но с параметром --title = Per аргументы больше не понимаются как отдельные аргументы.

Даже когда я читал эту тему, я не смог найти рабочее решение. Я собирался попытаться использовать eval, но кажется слишком отчаянным и решил поспрашивать.

...