我在這個小例子的腳本中隔離了一個問題。這就是我得到:bash:用引號對待引號
$ 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
看起來不錯,適用於我舉的例子。不幸的是,我不能將它應用到我的原始腳本。我更新了這個問題,也許你可以看看這個問題。 – multiholle 2012-04-26 20:39:52