bash引用如何与大括号{}扩展一起工作?

Joh*_*den 0 bash quoting

我正在尝试编写一个bash脚本来重现失败的测试.

最初的命令是(说我们正在测试回声)

echo aa @p{0,1}=port bb
Run Code Online (Sandbox Code Playgroud)

打印:

aa @p0=port @p1=port bb
Run Code Online (Sandbox Code Playgroud)

我在变量中得到了参数

TESTCASE='aa @p{0,1}=port bb'
Run Code Online (Sandbox Code Playgroud)

所以我构建了命令行

CMD='echo '${TESTCASE}
Run Code Online (Sandbox Code Playgroud)

然后执行它

${CMD}
Run Code Online (Sandbox Code Playgroud)

我得到:

aa @p{0,1}=port bb
Run Code Online (Sandbox Code Playgroud)

即花括号不会像在命令行上那样扩展

发生了什么,我该如何解决?

che*_*ner 7

使用数组存储多个参数,而不是常规参数.在设置数组参数的值之前,括号扩展将应用于括号内的字符串.

test_case=( aa @p{0,1}=port bb )
Run Code Online (Sandbox Code Playgroud)

使用函数存储代码,而不是常规参数.

cmd () {
    echo "${test_case[@]}"
}
Run Code Online (Sandbox Code Playgroud)