bug:golang通过exec.Command()执行命令报错

bug:golang通过exec.Command()执行命令报错

1 通过exec指定zip命令报错

需求描述:压缩某个目录下的所有文件

  • 在执行过程中,发现zip命令可行,但是 /usr/bin/zip test.zip *发现无法压缩成功,程序直接报错退出,后来排查返现是golang中的exec.Command()不支持*通配符,但是我们可以通过下面的方式实现效果。

*替换为所有的文件名及目录:

go 复制代码
package main

import (
	"fmt"
	"os/exec"
	"path/filepath"
)

func main() {
	zipName := "9999.zip"
	command := []string{
		"-r",
		zipName,
	}
	tmp, err := filepath.Glob("*")
	if len(tmp) == 0 {
		fmt.Println("No matching files found")
	}
	fmt.Println("* tmp=", tmp)
	command = append(command, tmp...)
	if err != nil {
		fmt.Println(err)
		return
	}
	fmt.Println("args=", command)

	cmd := exec.Command("/usr/bin/zip", command...)
	fmt.Println("compression cmd=", cmd)
	err = cmd.Run()
	if err != nil {
		fmt.Println("compression dir err=", err)
		return
	}

}
相关推荐
ん贤11 小时前
如何加快golang编译速度
后端·golang·go
riverz122713 小时前
Go 程序无法使用 /etc/resolv.conf 的 DNS 配置排查记录
golang
As_wind_16 小时前
Go 语言学习之测试
开发语言·学习·golang
石头wang21 小时前
onenote千年老bug,字体bug (calibri&微软雅黑) 的解决
microsoft·bug·onenote
程序员鱼皮21 小时前
会Vibe Coding的同事:我一个人干掉整个技术部!
ai·程序员·互联网·编程·开发·代码
linweidong1 天前
Go语言时间控制:定时器技术详细指南
后端·golang·go定时器·go开发·go面试·go分布式·go timer
一条闲鱼_mytube2 天前
gin go-kratos go-zero框架对比
开发语言·golang·gin
come112342 天前
Go 包管理工具详解:安装与使用指南
开发语言·后端·golang
西京刀客3 天前
构建 Go 可执行文件镜像 | 探索轻量级 Docker 基础镜像(我应该选择哪个 Docker 镜像?)
开发语言·docker·golang
007php0073 天前
服务器上PHP环境安装与更新版本和扩展(安装PHP、Nginx、Redis、Swoole和OPcache)
运维·服务器·后端·nginx·golang·测试用例·php