別のプログラムに変数を渡す必要がある bash スクリプトを作成しています。
./program $variable
問題は、$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"
$variable を宣言しないからです。bash 関数内で宣言されておらず、変更することはできません。
編集:わかりました、そのように動作するようになりました。
local temp="$variable"
./program "$temp"
ただし、他の方法ではなく、そのように機能する理由を知りたいです。