扔掉bash/Python!一分钟教你写go脚本!so easy

代码和使用说明可以看这里: http://github.com/daviddengcn/gosl

相比 bash/Python 写脚本的好处:

  1. 纯 Go 语言,没有新的学习成本!!!!!
  2. 引入预先导入的 package 和预定义的内置函数,方便脚本书写
  3. 可以无缝的和 Go 项目衔接,例如可以直接读取数据和配置。
  4. 和 Go 有相同的执行效率,大大快过 Python

欢迎大家使用并给建议,谢谢!

这里贴一个简单的例子:

#!/bin/gosl

APPS := []string {
  "tocrawl", "crawler", "mergedocs", "indexer",
}

for {
  for _, app := range APPS {
    Printf("Running %s...\n", app)
    Bash(app)
  }
}

gosl GoSearch

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.

Benefit

  1. Pure Go language. No need to learn a new script language.
  2. Pre-imported packages and pre-defined functions make it easy to code.
  3. Seamless integration with the Go project. E.g. can easily load configuration or data file from the Go project.
  4. Running efficiency same as Go, much faster than Python.

Example

  • Simple
#!/bin/gosl
 #!/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 Search is now operating with gosl. So you can find some good examples at: https://github.com/daviddengcn/gcse/tree/master/scripts
  • go-diff also provides scripts in gosl: https://github.com/daviddengcn/go-diff/tree/master/scripts
  • Installation and Usage

    Download and install the package
    go get github.com/daviddengcn/gosl
    go install github.com/daviddengcn/gosl
    (Optional) Link to /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
    Run a script

    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...]

    Pre-imported Packages

    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

    Frequently Used builtin Functions

    MethodDescriptionExample
    SConvert anything to a stringS(1234) == "123"
    IConvert anything to an intI("1234") == 1234
    BashEvalSimilar to bash backtick substitution.lsstr := BashEval("ls -l")
    ExecExecute an command with argumentserr, code := Exec("rm", "-rf" "tmp")
    BashExecute a bash lineerr, code := Bash("rm -rf tmp")
    ScriptDirReturns the directory of the scriptfile := ScriptDir() + "/" + fn

    More functions are defined in package daviddengcn/gosl/builtin/ (godoc)

    License

    Apache License V2

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值