【golang】go执行shell命令行的方法( exec.Command )
2023-12-17 04:55:00
所需包:
import "os/exec"
cmd的用法:
?cmd := exec.Command("ls", "-lah")????? //ls是命令,后面是参数
?e := cmd.Run()
多个参数的要分开传入:
如:ip link show bond0
cmd :=exec.Command("ip","link","show","bond0")
复杂参数使用fmt.Sprintf拼接:
?cmd := exec.Command("cat", fmt.Sprintf("/sys/class/net/%s/bonding/slaves", bondName))
cmd的两种运行方式:
Run?? 函数启动指定命令并等待它完成,而 ??Start?? 启动指定命令但不等待它完成;
?e := cmd.Run()
?e := cmd.Start()
例子:
package main
import (
?"fmt"
?"os/exec"
)
func main() {
cmd := exec.Command("ls")
cmd.Stdout = os.Stdout? //把cmd的输出指向标准输出,不然控制台看不到
cmd.Stderr = os.Stderr?? //把cmd的错误输出指向标准错误输出,不然控制台看不到
?e := cmd.Run()
?CheckError(e)
}
func CheckError(e error) {
?if e != nil {
?fmt.Println(e)
?}
}
为不同的操作系统指定命令
需要导入运行时包。
要查看所有可能的操作系统,我们可以运行 ??go tool dist list?? ,它将显示所有可能的操作系统和 ARCH 组合。
if runtime.GOOS == "linux" {
?cmd = exec.Command("ls")
}
命令封装
见:《golang exec.Command 执行命令用法实例》https://blog.csdn.net/whatday/article/details/109277998
文章来源:https://blog.csdn.net/bandaoyu/article/details/135039825
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!