Bash: передать переменную как отдельный параметр / параметр кавычки оболочки

Я пишу сценарий bash, который должен передать переменную в другую программу:

./program $variable

Проблема в том, что абсолютно необходимо, чтобы переменная $ передавалась как один параметр, а это не так, если она содержит пробелы.

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

Цитирование этого ничего не делает (хорошо, разработчики Bash):

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

Двойное цитирование делает сумасшедшие вещи (хорошо, разработчики Bash):

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

Есть простой способ сделать это? Черт, есть ли способ сделать это вообще?

Обновить: Хорошо, поскольку проблема, похоже, не в bash, вот дополнительная информация. Программа, которой я передаю аргументы, является скриптом Python. Не изменяя аргументы каким-либо образом, я получаю

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

Как я могу это исправить?

Редактировать: Нет я не пробовала

variable="Hello World"

потому что я никогда не объявляю переменную $. Он не объявлен внутри моей функции bash, и мне не разрешено его изменять.

Редактировать: Хорошо, я заставил это работать таким образом.

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

Я хотел бы знать, почему это работает именно так, а не каким-либо другим способом.

Ответы на вопрос(5)

Ваш ответ на вопрос