我有以下无效的代码段。编译但不执行预期的操作。在bash上执行相同的命令有效。为什么?
hash:="4ab32de"
cmd = "sed -i -e 's/clt_[0-9a-z]*/clt_"+hash+"/g' /tmp/test.env"
parts = strings.Fields(cmd)
for _, part :=range parts {
fmt.Printf("\n%s",part)
}
head = parts[0]
out, err = exec.Command(head,parts[1:]...).Output()
fmt.Printf("\nnew cmd is %s\n",cmd)
fmt.Printf("out:%s",string(out))
这样的零件输出是完美的
sed
-i
-e
's/clt_[0-9a-z]*/clt_4ab32de/g'
/tmp/test.env
答案 0 :(得分:3)
exec
软件包不使用外壳程序,因此请删除所有引号(和转义符)。您可以删除单引号。