スクリプトの問題をこの小さな例に切り分けました。それが私が得るものです:
$ cmd="test \"foo bar baz\""
$ for i in $cmd; do echo $i; done
test
"foo
bar
baz"
そして、それは私が期待したことです:
$ cmd="test \"foo bar baz\""
$ for i in $cmd; do echo $i; done
test
"foo bar baz"
期待される結果を得るためにコードを変更するにはどうすればよいですか?
UPDATE多分私の最初の例は十分ではありませんでした。Rob Davis の回答を見ましたが、その解決策を自分のスクリプトに適用できませんでした。問題をよりよく説明するために、スクリプトを単純化しようとしました。これはスクリプトです:
#!/bin/bash
function foo {
echo $1
echo $2
}
bar="b c"
baz="a \"$bar\""
foo $baz
これは、スクリプトの出力と比較して予想される出力です。
expected script
a a
"b c" "b