Acrescentar variáveis com aspas e espaço no bash [duplicado]

1

Eu gostaria de executar um comando em um script bash com argumentos, no entanto, os argumentos são condicionais. O que eu gostaria de conseguir é isso

command --myflag var="value with space"

No caso acima, gostaria de ter --myflag var="value with space" condicional e também ter aspas duplas por causa do espaço (entre outras razões). Então eu tentei algo assim

if [ $somecondition ]; then
  FLAG="--myflag var=\"value with space\""
fi

command $FLAG

Quando eu executo o acima na depuração eu posso ver que é executado é isso

command --myflag 'var="value' with 'space"'

Observe as aspas simples. Eu não sei porque isso é, mas depois de várias tentativas de tentar isso parece não conseguir encontrar uma solução,

Como alguém poderia resolver isso?

    
por ByteFlinger 19.01.2017 / 17:51

1 resposta

3

Você terá que usar a extensão do array Bash . Algo como:

declare -a FLAG
if [ $somecondition ]; then
  FLAG=(--myflag 'var="value with space"')
fi
command "${FLAG[@]}"
    
por 19.01.2017 / 19:20