shell - 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}'"]
将变量的值传递给任务时是否可以用引号括起来?
解决方案
您似乎想"${*:3}"
改用它,它将从 3 个参数中生成一个以空格分隔的单词,而不是一系列单个单词,每个参数一个。
推荐阅读
- lua - 使用多个同名局部变量时的垃圾收集
- flutter - 如何将小部件返回到以前的状态
- javascript - 添加简单的 onclick 事件和 javascript 函数时出现错误的引导按钮
- r - 问题:来自体育网站的 Webscraping Vector 错误
- javascript - JS:在我的页面中放置 2 个液体按钮而不是 1 个
- javascript - 如何生成几个不同的 MapBox 地图
- c# - 在 ASP.Net 中拒绝访问路径
- excel - Power Query/Excel:使用 API 和密钥从 API 导入数据
- angular - 将特定文件排除到较旧的 Typescript 版本
- wordpress - ACF 复选框 - 翻译