您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關(guān)shell腳本可以被golang編寫嗎,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。
golang可以編寫shell腳本嗎
golang是可以編寫shell腳本,首先可以通過創(chuàng)建一個(gè)閱讀器去訪問鍵盤,每當(dāng)按下回車鍵時(shí),任何的寫入都會(huì)被存儲(chǔ)到輸入變量中;然后根據(jù)出入的數(shù)據(jù)來執(zhí)行邏輯運(yùn)算;最后將處理結(jié)果使用“fmt.Println()”將數(shù)據(jù)輸出即可。
代碼示例:
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}
看完上述內(nèi)容,你們對(duì)shell腳本可以被golang編寫嗎有進(jìn)一步的了解嗎?如果還想了解更多知識(shí)或者相關(guān)內(nèi)容,請(qǐng)關(guān)注億速云行業(yè)資訊頻道,感謝大家的支持。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。