我正在使用glide来管理对我的项目的依赖。我为我创建了一个运行脚本go test $(glide novendor)(它测试所有目录,不包括供应商/一个)。当它工作时,运行命令的输出不会超出第一行:ok my/project/scripts 0.005s这是运行它的脚本部分:// Get the paths to test (excluding the "vendor/" directory)cmd := exec.Command("glide", "novendor")var out bytes.Buffercmd.Stdout = &outerr = cmd.Run()if err != nil { log.Fatal("Could not run `glide novendor`: ", err)}glidenovendor := []string{"test"}// Represents the "test ./src/... ./scripts/..." portion of the commandglidenovendor = append(glidenovendor, strings.Split(out.String(), " ")...)// Run `go test ./src/... ./scripts/...`cmd = exec.Command("go", glidenovendor...)cmd.Stdout = os.Stdouterr = cmd.Run()if err != nil { log.Fatal("Could not run `go test` command with args: ", cmd, err)}直接在我的 shell 上运行命令会按预期给出所有输出行。如何让我的脚本打印整个输出?
1 回答
鸿蒙传说
TA贡献1865条经验 获得超7个赞
原来那条线
glidenovendor = append(glidenovendor, strings.Split(out.String(), " ")...)
出于某种原因"\n",向glidenovendor切片的最后一个字符串元素添加了一个新行字符。我仍然不知道为什么。但是使用下面的代码段删除它会使脚本按预期运行:
// Remove trailing LF from strings in `glidenovendor`
for i, v := range glidenovendor {
glidenovendor[i] = strings.Trim(v, "\n")
}
- 1 回答
- 0 关注
- 176 浏览
添加回答
举报
0/150
提交
取消