如何将变量嵌套在另一个变量中以进行参数传递?

时间:2014-05-14 09:00:09

标签: bash shell

说我们有:

test() {
    echo $1
    echo $2
}

和两个变量:

a="hello world"
b="$a blabla.."

test $b

显示:

hello
world

我想要的是:

hello world
blabla..

我怎样才能做到这一点?

由于

2 个答案:

答案 0 :(得分:2)

使用此:

a="hello world"
b="'$a' blabla"
eval "test $b"

需要使用单引号将hello world作为单个参数保持在一起。然后,您需要使用eval,因为在变量扩展后通常不会处理引号。

答案 1 :(得分:2)

您希望b成为一个数组,否则单个字符串无法使用空格来确定哪个空格字符是分隔符:

mytest() {
    echo "$1"
    echo "$2"
}

a="hello world"
b=( "$a" "blah blah" )

mytest "${b[@]}"
hello world
blah blah