• 技术文章 >常见问题

    golang可以编写shell脚本吗

    GuanhuiGuanhui2020-05-12 13:45:57原创1060

    golang可以编写shell脚本吗

    golang是可以编写shell脚本,首先可以通过创建一个阅读器去访问键盘,每当按下回车键时,任何的写入都会被存储到输入变量中;然后根据出入的数据来执行逻辑运算;最后将处理结果使用“fmt.Println()”将数据输出即可。

    代码示例:

    package main
    
    import (    "bufio"
        "errors"
        "fmt"
        "os"
        "os/exec"
        "strings")
    
    func main() {
        reader := bufio.NewReader(os.Stdin) for {
            fmt.Print("> ")     // Read the keyboad input.
            input, err := reader.ReadString('\n')       if err != nil {
                fmt.Fprintln(os.Stderr, err)
            }       // Handle the execution of the input.
            err = execInput(input)      if err != nil {
                fmt.Fprintln(os.Stderr, err)
            }
        }
    }
    // ErrNoPath is returned when 'cd' was called without a second argument.var ErrNoPath = errors.New("path required")
    
    func execInput(input string) error {    // Remove the newline character.
        input = strings.TrimSuffix(input, "\n") // Split the input separate the command and the arguments.
        args := strings.Split(input, " ")   // Check for built-in commands.
        switch args[0] {    case "cd":      // 'cd' to home with empty path not yet supported.
            if len(args) < 2 {          return ErrNoPath
            }
            err := os.Chdir(args[1])        if err != nil {         return err
            }       // Stop further processing.
            return nil
        case "exit":
            os.Exit(0)
        }   // Prepare the command to execute.
        cmd := exec.Command(args[0], args[1:]...)   // Set the correct output device.
        cmd.Stderr = os.Stderr
        cmd.Stdout = os.Stdout
    
        // Execute the command and save it's output.
        err := cmd.Run()    if err != nil {     return err
       }   return nil}

    推荐教程:《Go教程

    以上就是golang可以编写shell脚本吗的详细内容,更多请关注php中文网其它相关文章!

    声明:本文原创发布php中文网,转载请注明出处,感谢您的尊重!如有疑问,请联系admin@php.cn处理
    专题推荐:golang
    上一篇:排序算法的一般选择规则是什么 下一篇:A类IP地址的范围是多少
    大前端线上培训班

    相关文章推荐

    • golang和nodejs的区别是什么?• golang和python有什么区别?• golang和哪种语言像?• golang会代替java吗?• golang吉祥物是啥?

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网