我正在寫有一個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"
我想知道爲什麼它的工作方式,而不是任何其他方式,但。
的問題是在「方案」角落找尋解決它; './program「$ variable」'傳遞一個可以包含空格的參數,程序正在做什麼? –
你試過用'variable =「Hello World」' – Vijay
@sarathi:不,因爲我實際上從不聲明$變量。我只是通過它。 –