我试图找出 Linux 上是否存在一个程序,我找到了这篇文章。我尝试从我的 go 程序中执行它,它一直给我一个错误,说它在我的 $PATH 中找不到“命令”,这是意料之中的,因为它是 linux 中的内置命令而不是二进制文件。所以我的问题是如何从 go 程序中执行 linux 的内置命令?exec.Command("command", "-v", "foo")错误:exec:“命令”:在 $PATH 中找不到可执行文件
2 回答
饮歌长啸
TA贡献1951条经验 获得超3个赞
就像那篇文章所说的那样,“命令”是内置的 shell。您可以在 go via 中本地执行此操作exec.LookPath
。
如果必须,您可以使用系统which
二进制文件,也可以command
从 shell 中执行,
exec.Command("/bin/bash", "-c", "command -v foo")
肥皂起泡泡
TA贡献1829条经验 获得超6个赞
或者,如果它是一个不需要参数的内置命令,您可以执行以下操作:
package main
import (
"fmt"
"log"
"os/exec"
)
func main() {
out, err := exec.Command("uuidgen").Output()
if err != nil {
log.Fatal(err)
}
fmt.Printf("%s", out)
}
这将打印出一个唯一的 ID,如下所示: 4cdb277e-3c25-48ef-a367-ba734ce407c1 就像直接从命令行调用它一样。
- 2 回答
- 0 关注
- 214 浏览
添加回答
举报
0/150
提交
取消