如何在 Golang 中执行带参数的 curl 命令?
在 golang 中使用 exec.command 确实可以执行带参的命令,但需要严格遵循其参数规则:func command(name string, arg ...string),参数部分是一个可变参数字符串数组。
修改后的代码如下:
func main() { curl := exec.command("curl", "-k", "-s", "-v", "https://www.baidu.com") out, err := curl.output() if err != nil { fmt.println("error:", err) return } fmt.println(string(out)) }
另外,原命令行中的重定向操作 2>./tmp/ca.info 则是 shell 的功能,与 go 无关。go 中命令行的执行结果会输出到两个变量:out 和 err,其中 err 就是标准错误输出(stderr),你可以将其内容写入文件:
if err := curl.Run(); err != nil { io.Copy(os.Stderr, err) }