【发布时间】:2015-11-13 13:51:40
【问题描述】:
我的构建脚本有以下任务
task editProjectArtificat (type:Exec) {
executable "sed"
args "-e '/myInsertionMatchingPattern/r " + projectDir.toString() + "/scripts/install/myTextFileToInsert' < " + projectDir.toString() + "/build/scripts/MyOriginalInputFile > " + projectDir.toString() + "/build/scripts/MyChangedOutputFile"
}
当上述任务执行时,gradle 构建失败并显示此错误消息
sed: 1: " '/myInsertionPattern/r ...": 无效的命令代码
FAILURE:构建失败并出现异常。
- 出了什么问题:
任务“:MyProject:editProjectArtificat”执行失败。
进程 'command 'sed'' 以非零退出值 1 结束
但是,当我更改 gradle.build 脚本以使任务看起来像这样时
task editProjectArtificat (type:Exec) {
executable "sed"
args "-e /myInsertionMatchingPattern/r " + projectDir.toString() + "/scripts/install/myTextFileToInsert < " + projectDir.toString() + "/build/scripts/MyOriginalInputFile > " + projectDir.toString() + "/build/scripts/MyChangedOutputFile"
}
现在 "arg" 行中的两个 "'" 都被删除了,我们不再遇到 gradle build 错误;但是,当 gradle 构建完成时,sed 不会按预期生成“MyChangedOutputFile”文件。
在 shell 上键入带有两个“'”的 sed 命令会产生预期的输出?当外壳上的“'”被删除时,sed 失败。我的理解 sed 需要围绕匹配模式和命令“'”。
【问题讨论】: