error: golang informa de un error al ejecutar comandos a través de exec.Command()
1 Especifique el comando zip a través de exec para informar un error
Descripción del requisito: Comprimir todos los archivos en un directorio
- Durante el proceso de ejecución, se encontró que el comando zip era factible, pero
/usr/bin/zip test.zip *
se encontró que el comando zip no se pudo comprimir con éxito. El programa informó un error y salió directamente. Posteriormente, después de verificar, se encontró que exec.Command () en golang no admite*
comodines, pero podemos lograr el efecto a través de los siguientes métodos.
será *
reemplazado con todos los nombres de archivos y directorios:
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
}
}