Shell 脚本:传递到数组时用引号引起来的变量?

Shell script: Surround variable with quotes when passing into an array?

我有一个 shell 脚本,其中一部分执行此操作:

bundle exec rake parallel[${@:3}];

${@:3} 是动态的,可能类似于 -p thread11 THREAD=test_thread11,或者只是 @test.feature

rake 任务需要一个参数,但无论我尝试什么,我都无法让 shell 脚本用引号将变量括起来,而不是发送类似

的内容

bundle exec rake parallel["-p thread11 THREAD=test_thread11"]

我最终发送

bundle exec rake parallel[-p thread11 THREAD=test_thread11]

这导致 rake 任务失败。

使用 echo 语句,我可以通过

获得正确的输出

echo "Will use run command" bundle exec rake parallel["'${@:3}'"]

是否可以在将变量值传递给任务时用引号括起来?

您似乎想改用 "${*:3}",这将从 3 个参数中生成一个 space 分隔的单词,而不是一系列单独的单词,每个参数一个。