Bash: pass zmienna jako pojedynczy parametr / parametr cytowania powłoki

Piszę skrypt bash, który musi przekazać zmienną do innego programu:

./program $variable

Problem polega na tym, że absolutnie konieczne jest przekazanie zmiennej $ jako pojedynczego parametru, co nie ma miejsca, jeśli zawiera białe znaki.

variable=Hello World
./program $variable
-> program receives two arguments: 'Hello' 'World'

Cytowanie go w ogóle nic nie robi (dobrze zrobione, bash devs):

variable=Hello World
./program "$variable"
-> program receives: 'Hello' 'World'

Podwójne cytowanie to szalone rzeczy (dobrze zrobione, bash devs):

variable=Hello World
./program "'$variable'"
-> program receives: "'Hello" "World'"

Czy można to zrobić w prosty sposób? Do licha, czy w ogóle można to zrobić?

Aktualizacja: Dobra, ponieważ problem nie wydaje się bash, oto kilka dodatkowych informacji. Program, do którego przekazuję argumenty, to skrypt Pythona. Bez modyfikowania argumentów w jakikolwiek sposób

print sys.argv
-> ['/usr/bin/program', "'Hello", "World'"]

Jak mogę to naprawić?

Edytować: Nie, nie próbowałem

variable="Hello World"

ponieważ nigdy nie deklaruję zmiennej $. Nie jest deklarowany wewnątrz mojej funkcji bash i nie wolno mi go modyfikować.

Edytować: Dobra, mam to do pracy w ten sposób.

local temp="$variable"
./program "$temp"

Chciałbym jednak wiedzieć, dlaczego tak działa, a nie w inny sposób.

questionAnswers(5)

yourAnswerToTheQuestion