【发布时间】:2021-05-05 10:55:34
【问题描述】:
我想在 golang 文件中运行一个 shell 脚本(大约 75 行)。
go 文件除了执行 shell 脚本之外什么都没有做(它必须是一个 go 文件:))
我正在运行的代码是这样的: 去文件:
package main
import (
"fmt"
// "os"
"os/exec"
)
func main() {
out:= Native()
fmt.Println(out)
}
func Native() string {
cmd, err := exec.Command("/bin/bash", "./file.sh").Output()
if err != nil {
fmt.Printf("error %s", err)
}
output := string(cmd)
return output
}
我使用go run myfile.go http://example.com 运行它。
它开始执行,但停止并看到此错误消息:
Please specify a target.
Usage:
./file.sh http://domain.tld/
cat urls.txt | ./file.sh
如果我不提供 URL,脚本会打印什么,尽管我提供了。我做错了什么?
【问题讨论】:
-
我认为 bash 脚本希望您为其提供一个参数。您的代码显然没有。因此,shell 脚本打印出它的帮助信息并退出。换句话说:您需要将您提供给 GO 的参数也传递给 bash 调用!
-
并注意:当给出的答案解决了您的问题时,请不要犹豫接受它(靠近答案投票数的复选标记图标)