我有一些来自我的rakefile的代码。很少有任务必须有多个参数。
desc 'confidential'
task :task1, [:targetPrj, :arg1] do |t,args|
args.with_defaults(:arg1 => "0")
TARGET_PROJECT = args[:targetPrj]
TEST_SW = args[:emcTest]
makeApp(t)
end
如果我打电话给rake task1[TARGET _1]
一切都很好,但如果我添加第二个参数rake task1[TARGET _1, 5]
然后我得到:
Rake aborted!
Don't know how to build task task1[TARGET_1, '
我真的不知道出了什么问题?
参数应该用逗号分隔,不能有空格:
task1[TARGET_1,5]
命令行参数由空格分隔,rake将每个参数视为单独的任务。这将运行任务foo
和bar
:
rake foo bar
如果你有:
rake task1[TARGET_1, 5]
然后rake有两个参数:task1[TARGET_1,
和5]
。尝试解析这些字符串会导致错误。
要获得正确的结果,可以删除空格,转义空格或将参数放在引号中:
rake task1[TARGET_1,5]
rake task1[TARGET_1,\ 5]
rake "task1[TARGET_1, 5]"
请注意,此行为不是特定于rake的,这就是命令行参数的一般工作方式。