Passando uma string vazia como um argumento de linha de comando usando uma variável bash para um comando

2

Eu tenho um daemon que pode ser executado manualmente a partir de um shell bash como este:

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

As opções de linha de comando para este daemon devem ser configuradas em /etc/default/daemonname da seguinte forma:

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

Esta configuração é originada por um script init que inicia o daemon passando as opções de linha de comando encontradas em DAEMON_OPTS desta forma:

daemon-binary "$DAEMON_OPTS"

O resultado é que a string '' é citada novamente e, em vez de uma string vazia, o daemon-binary é passado em dois singles. Então, na verdade, o resultado é o mesmo que chamar:

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

Tanto quanto eu entendo, o bash divide o DAEMON_OPTS em cada espaço em branco, então, cita todas as partes e as passa para o daemon-binary .

Existe alguma maneira de escrever a variável bash DAEMON_OPTS de forma que o que está sendo expandido para "''" será expandido em uma string vazia?

    
por ctavan 07.11.2012 / 23:31

1 resposta

3

Este é um caso em que você não deseja citar a expansão de DAEMON_OPTS :

DAEMON_OPTS="--name some-name --separator '' /path/to/file"
daemon-binary $DAEMON_OPTS
    
por 08.11.2012 / 00:19

Tags