zoukankan      html  css  js  c++  java
  • [golang]写了一个可以用 go 来写脚本的工具:gosl

    转自:https://golangtc.com/t/53cca103320b52060a000030

    写了一个可以用 go 来写脚本的工具:gosl

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

    Go Search 已经完全用 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...
    ", app)
        Bash(app)
      }
    }

    gosl 

    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
    
    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, "
    ")))
        

    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.

    fmtosstringsstrconvmathtime, and github.com/daviddengcn/gosl/builtin

    Frequently Used builtin Functions

    MethodDescriptionExample
    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)

  • 相关阅读:
    Monitor All SQL Queries in MySQL (alias mysql profiler)
    to config RBS/RBLOB in sharepoint
    Chapter 10 EF 6 Support
    分布式网站架构后续:zookeeper技术浅析
    js中的json对象详细介绍
    JS通用方法总结(一)
    combobox远程加载数据的总结和Json数据的小结
    iframe自适应方法
    简单理解Hibernate三种状态的概念及互相转化
    hibernate的save()和persit()之间的区别
  • 原文地址:https://www.cnblogs.com/landv/p/11605984.html
Copyright © 2011-2022 走看看