Bash 从shell脚本运行Golang脚本

Bash 从shell脚本运行Golang脚本,bash,go,automator,Bash,Go,Automator,每当我登录OSX时,我都会尝试运行我的golang程序。我正在使用Automator尝试以下脚本: #!/bin/sh export GOPATH=/Volumes/DTSE9/worker go run /Volumes/worker/worker.go 每当我使用Automator运行此命令时,它都会告诉我go:command not found创建一个类似sayfile.go的文件,其内容应该如下所示: ///path-to/bin/go run $0 $@; exit $? pack

每当我登录OSX时,我都会尝试运行我的golang程序。我正在使用Automator尝试以下脚本:

#!/bin/sh
export GOPATH=/Volumes/DTSE9/worker
go run /Volumes/worker/worker.go

每当我使用Automator运行此命令时,它都会告诉我
go:command not found

创建一个类似say
file.go的文件,其内容应该如下所示:

///path-to/bin/go run $0 $@; exit $?

package main

func main() {
    println("Hello World!")
}
然后运行
chmod+x file.go
,然后可以将其作为
/file.go p1 p2
执行


编辑:这在Ubuntu上有效。我没有看到OSX有问题。

因此
go
不在路径中。您可以将其添加到路径中,也可以将其添加到完整路径中。@JimB您的意思是在第一次导出上方添加
export GOROOT=/usr/local/go/bin/go
?只是尝试了一下,它就不起作用了。不,不要设置GOROOT(而且这对GOROOT来说不是一个有效的值)。如果路径中没有
/usr/local/go/bin
,则需要将其添加到路径中,或者使用
/usr/local/go/bin/go-run
,但为什么不编译程序并运行可执行文件呢?它将运行得更快,并且不依赖于GOPATH.lol的状态,这实际上是字面上的“go脚本”,但它是一个整洁的hack;)。它在macOS上也应该可以正常运行。只是尝试了一下,得到了:
go:unknown子命令“/main.go”
运行“go-help”以供使用。
您不再需要调用
go
命令-只要
$/main.go
。我在Ubuntu上使用它;虽然我不熟悉OSX,但因为它是一个兼容POSIX的操作系统(据我所知,它有bash),这应该也适用于OSX。@KavehShahbazian是的,我就是这么做的
$./main.go
我得到了上面的错误消息。然后是关于OSX的一些我不知道的东西(但是猜测是在第一行,而不是
/path to/go run
你只有
/path to/go
)。