我喜欢使用shebangs直接运行我的Perl脚本:
#!/usr/bin/env perl
Run Code Online (Sandbox Code Playgroud)
Go程序的shebang是什么?
هوم*_*پور 41
//usr/bin/go run $0 $@ ; exit
例:
//usr/bin/go run $0 $@ ; exit
package main
import "fmt"
func main() {
fmt.Println("Hello World!")
}
Run Code Online (Sandbox Code Playgroud)
去处理//作为单行注释和shell忽略额外/
lik*_*ike 22
我更喜欢这个:
///bin/true; exec /usr/bin/env go run "$0" "$@"
Run Code Online (Sandbox Code Playgroud)
与هومنجاویدپور的答案相比,这有几个优点:
使用'exec'替换新的shell进程而不是启动孙进程.因此,您的Go计划将成为直接子进程.这样更有效,对于某些高级情况(例如调试和监视)也很重要.
适当引用参数.空格和特殊字符不会引起问题.
领先的"///"符合标准,而不仅仅是"//".如果仅使用"//",则可能会遇到实现定义的行为.以下是http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap04.html的引用:
如果路径名以两个连续的字符开头,则可以以实现定义的方式解释前导字符后面的第一个组件,尽管应将两个以上的前导字符视为单个字符.
我用bash,dash,zsh和ksh测试了这个答案.
例:
///bin/true; exec /usr/bin/env go run "$0" "$@"
package main
import "fmt"
func main() {
fmt.Println("???")
}
Run Code Online (Sandbox Code Playgroud)
Eva*_*haw 13
默认情况下没有一个.但是,有一个名为gorun的第三方工具可以让你这样做.https://wiki.ubuntu.com/gorun
不幸的是编译器不喜欢shebang系列.您无法编译与gorun一起运行的相同代码.
Go程序被编译为二进制文件; 我认为没有选项可以直接从源代码运行它们.
这类似于其他编译语言,如C++或Java.某些语言(如Haskell)提供完全编译模式和"脚本"模式,您可以使用shebang行直接从源代码运行.