Назад | Перейти на главную страницу

Передача пустой строки в качестве аргумента командной строки с использованием переменной bash в команду

У меня есть демон, который можно запустить вручную из оболочки bash следующим образом:

daemon-binary --name some-name --separator '' /path/to/file

Параметры командной строки для этого демона должны быть настроены в /etc/default/daemonname как это:

DAEMON_OPTS="--name some-name --separator '' /path/to/file"

Эта конфигурация получена из сценария инициализации, который запускает демон, передавая параметры командной строки, найденные в DAEMON_OPTS как это:

daemon-binary "$DAEMON_OPTS"

В результате строка '' снова цитируется, и вместо пустой строки daemon-binary проходит два сингла. Фактически результат такой же, как и при вызове:

daemon-binary --name some-name --separator "''" /path/to/file

Насколько я понимаю, bash разбивает DAEMON_OPTS на каждом пробеле, затем цитирует все части и передает их daemon-binary.

Есть ли способ записать переменную bash DAEMON_OPTS так что то, что сейчас расширяется до "''" будет расширена в пустую строку?

Это тот случай, когда вы не хочу процитировать расширение DAEMON_OPTS:

DAEMON_OPTS="--name some-name --separator '' /path/to/file"
daemon-binary $DAEMON_OPTS