首页 > 解决方案 > Shell脚本:传入数组时用引号包围变量?

问题描述

我有一个 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 并行[-p thread11 THREAD=test_thread11]

这会导致 rake 任务失败。

使用 echo 语句,我可以通过以下方式获得正确的输出

echo "将使用运行命令" bundle exec rake parallel["'${@:3}'"]

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

标签: shellshrake-task

解决方案


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


推荐阅读