Bash: pass variable como um parâmetro de citação de parâmetro / shell único
Eu estou escrevendo um script que tem que passar uma variável para outro programa:
./program $variable
O problema é que é absolutamente necessário que $ variável seja passada como um único parâmetro, o que não é o caso se ele contiver espaços em branco.
variable=Hello World
./program $variable
-> program receives two arguments: 'Hello' 'World'
Citando isso não faz nada (bem feito, bash devs):
variable=Hello World
./program "$variable"
-> program receives: 'Hello' 'World'
Dupla citando faz coisas malucas (bem feito, bash devs):
variable=Hello World
./program "'$variable'"
-> program receives: "'Hello" "World'"
Existe uma maneira fácil de fazer isso? Heck, existe uma maneira de fazer isso?
Atualizar: Ok, desde que o problema não parece ser bash, aqui estão algumas informações adicionais. O programa para o qual estou passando argumentos é um script python. Sem modificar os argumentos de forma alguma, eu fico
print sys.argv
-> ['/usr/bin/program', "'Hello", "World'"]
Como posso consertar isso?
Editar: Não, eu não tentei
variable="Hello World"
porque eu nunca declaro $ variável. Não está sendo declarado dentro da minha função bash e não estou autorizado a modificá-lo.
Editar: Ok, eu tenho que trabalhar assim.
local temp="$variable"
./program "$temp"
Eu gostaria de saber por que funciona dessa maneira e não de qualquer outra maneira.