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"
Я хотел бы знать, почему это работает именно так, а не каким-либо другим способом.