首页 >后端开发 >Golang >当同一个命令在控制台中运行时,为什么我的 Go `exec.Command` 由于多个参数而失败?

当同一个命令在控制台中运行时,为什么我的 Go `exec.Command` 由于多个参数而失败?

Patricia Arquette
Patricia Arquette原创
2024-12-19 19:58:15824浏览

Why Does My Go `exec.Command` Fail with Multiple Arguments When the Same Command Works in the Console?

使用多个参数执行命令

在 Go 中执行命令时,一定要注意参数传递给命令的方式。用户最近遇到的一个问题是,从控制台执行带有某些参数的命令“top”可以工作,但在使用 exec 包时失败。

问题

用户的代码成功执行了“top -n 10 -l 2”,但未能执行“top -o cpu -n 10 -l 2”。 exec 包提供的错误消息表明“-o cpu”参数无效。

解决方案

问题在于参数传递给的方式命令。控制台上的命令行解释器会自动分隔参数,从而允许命令正确解析它们。但是,在使用 exec 包时,必须显式分隔参数。

对于这种特殊情况,正确的代码是:

cmd := exec.Command(app, "-o", "cpu", "-n", "10", "-l", "2")

通过分隔参数,exec 包可以按预期将它们传递给命令,解决错误。

以上是当同一个命令在控制台中运行时,为什么我的 Go `exec.Command` 由于多个参数而失败?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn