将带引号的bash变量作为参数传递



我有一个变量:

var='aaa bbb "ccc ddd"'

并且以下参数打印./script.sh:

#!/bin/bash
for arg in "$@"; do
echo "$arg"
done

预期结果:

$ ./script.sh $var
aaa
bbb
ccc ddd

实际结果:

$ ./script.sh $var
aaa
bbb
"ccc
ddd"
$ ./script.sh "$var"
aaa bbb "ccc ddd"
$ ./script.sh ${var@Q}
'aaa
bbb
"ccc
ddd"'

有办法让它发生吗?

我无法控制$var——例如,它不能是一个数组。

找到了解决方案!

$ echo "$var" | xargs ./script
aaa
bbb
ccc ddd

最新更新