gpt4 book ai didi

go - 为什么某些命令返回输出但其他命令不返回 exec.Command()

转载 作者:IT王子 更新时间:2023-10-29 02:31:06 26 4
gpt4 key购买 nike

我想弄清楚为什么有些 shell 命令可以与 goloang exec.Command 一起使用,而其他命令却不能,因为它们在终端中输入时都返回相同的结果。我基本上想对 Windows 和 Mac 二进制文件使用相同的命令 (exec.Command("where", "go").Output())。

具体来说:

goInstalled, err := exec.Command("where", "go").Output() // does not return output on mac when compiled but does in terminal command. DOES return output on windows compiled.

goInstalled, err := exec.Command("which", "go").Output() // does not return output on mac when compiled but does in terminal command

goInstalled, err := exec.Command("command", "-v", "go").Output() // returns output when compiled and as terminal command (mac only)

如果可能的话,我想对 windows 和 mac (darwin) 使用相同的命令,而不是创建两个单独的函数来检查用户机器上是否安装了东西。

最佳答案

您在这里遇到的主要问题是 exec.Command 执行程序,其中您尝试使用的命令实际上是内置命令。

为了使用内置插件,您需要使用 exec.LookPath 找到它们,它们通常在 shell 之外不可用。

如果必须,您还可以通过将 shell 作为第一个参数从 shell 执行命令:

exec.Command("/bin/bash", "-c", "command -v foo")

关于go - 为什么某些命令返回输出但其他命令不返回 exec.Command(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54119664/

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