golang无法在终端上运行的exec命令
尝试使用exec
程序包运行mv
命令时出现错误。
这是我要执行的操作的一个示例:
cmd := exec.Command("mv", "./source-dir/*", "./dest-dir")output, err := cmd.CombinedOutput()
cmd.Run()
err返回以下内容 exit status 1
输出返回此 mv: rename ./source-dir/* to ./dest-dir/*: No such file or directory
当我更改此行时,实际上可以使脚本工作:
cmd := exec.Command("mv", "./source-dir/*", "./dest-dir")
到以下内容:
cmd := exec.Command("mv", "./source-dir/file.txt", "./dest-dir")
该命令可以正常运行并成功移动文件,但无法使用通配符。在命令中似乎没有将星号用作通配符。这是为什么?还有其他在GO中使用通配符的方法吗?如果没有,那么我将如何将所有文件从递归移动source-
dir到dest-dir
?
谢谢
回答:
在外壳程序上键入命令时,外壳程序将./source_dir/*
使用所有匹配文件的列表并将其替换,每个参数一个。该mv
命令将看到文件名列表,而不是通配符。
您需要做的是自己做同一件事(使用filepath.Glob返回[]string
匹配文件的a),或者调用外壳程序使其能够完成工作(使用exec.Command("/bin/sh",
"-c", "mv ./source_dir/* ./dest_dir"))。
以上是 golang无法在终端上运行的exec命令 的全部内容, 来源链接: utcz.com/qa/427822.html