代码和使用说明可以看这里: http://github.com/daviddengcn/gosl
Go Search 已经完全用 gosl 来启动了。
相比 bash/Python 写脚本的好处:
这里贴一个简单的例子:
#!/bin/gosl
APPS := []string {
"tocrawl", "crawler", "mergedocs", "indexer",
}
for {
for _, app := range APPS {
Printf("Running %s...\n", app)
Bash(app)
}
}
This is an application that can make you write script with the Go language.
It is NOT an interpreter but the pure Go. The preprocessor tranforms the script into a Go program, instantly compiles and runs. So it is almost same as the standard Go with the same efficiency.
#!/bin/gosl
import "encoding/json"
toJson := func(lines []string) string {
res, _ := json.Marshal(struct {
Lines []string `json:"lines"`
}{
Lines: lines,
})
return string(res)
}
files := BashEval("ls -l %s", "/tmp/")
Println(toJson(Split(files, "\n")))
go get github.com/daviddengcn/gosl go install github.com/daviddengcn/gosl
/bin
sudo ln -s $GOPATH/bin/gosl /bin/gosl
If you don't want to do this, the interpreter line can be like this, assuming $GOPATH/bin
is in your $PATH
:
#!/usr/bin/env gosl
If a script starts with the bash interpreter line: #!/bin/gosl
. You can run it like this
chmod a+x example.gs ./example.gs [params...]
Or you can explictly call gosl
to run it:
gosl example.gs [params...]
The following packages are pre-imported with .
, i.e. you can directly use the methods exported by them. No complain of the compiler if you don't use them.
fmt
, os
, strings
, strconv
, math
, time
, and github.com/daviddengcn/gosl/builtin
builtin
FunctionsMethod | Description | Example |
---|---|---|
S | Convert anything to a string | S(1234) == "123" |
I | Convert anything to an int | I("1234") == 1234 |
BashEval | Similar to bash backtick substitution. | lsstr := BashEval("ls -l") |
Exec | Execute an command with arguments | err, code := Exec("rm", "-rf" "tmp") |
Bash | Execute a bash line | err, code := Bash("rm -rf tmp") |
ScriptDir | Returns the directory of the script | file := ScriptDir() + "/" + fn |
More functions are defined in package daviddengcn/gosl/builtin/ (godoc)