gpt4 book ai didi

go - 使用某些参数调用命令有效但不适用于其他参数但在控制台中有效

转载 作者:数据小太阳 更新时间:2023-10-29 03:38:46 24 4
gpt4 key购买 nike

以下代码运行并输出 10 个进程的详细信息。

package main

import (
"os/exec"
)

func main() {
print(top())
}

func top() string {
app := "/usr/bin/top"

cmd := exec.Command(app, "-n 10", "-l 2")
out, err := cmd.CombinedOutput()

if err != nil {
return err.Error() + " " + string(out)
}

value := string(out)
return value
}

但是,当我尝试使用附加参数“-o cpu”时(例如 cmd := exec.Command(app, "-o cpu", "-n 10", "-l 2")) .我收到以下错误。

exit status 1 invalid argument -o:  cpu
/usr/bin/top usage: /usr/bin/top
[-a | -d | -e | -c <mode>]
[-F | -f]
[-h]
[-i <interval>]
[-l <samples>]
[-ncols <columns>]
[-o <key>] [-O <secondaryKey>]
[-R | -r]
[-S]
[-s <delay>]
[-n <nprocs>]
[-stats <key(s)>]
[-pid <processid>]
[-user <username>]
[-U <username>]
[-u]

但是我的控制台中的命令“top -o cpu -n 10 -l 2”工作正常。我也在使用 OS X 10.9.3。

最佳答案

分开你的论点。

top -o cpu -n 10 -l 2 不是您正在执行的内容。你作为参数传递给命令的内容等同于在 shell 中使用 top "-o cpu""-n 10""-l 2" (如果你尝试,它会给你完全相同的输出)。

大多数命令会将其严格解析为 3 个参数。由于 POSIX 参数不需要空格,top-o 拆分为第一个选项,并将其余部分用作其参数。这主要是偶然地适用于数字参数,但是对于 -o 它会查找名为 "cpu" 的字段,但实际上并不存在。

相反,使用

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

关于go - 使用某些参数调用命令有效但不适用于其他参数但在控制台中有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24427615/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com