首頁 > 後端開發 > Golang > 主體

如何使用 Golang 範本產生帶有 switch 語句和 ForEach 迴圈的動態 bash 腳本?

DDD
發布: 2024-10-30 03:48:03
原創
617 人瀏覽過

How can Golang templates be used to generate dynamic bash scripts with switch statements and ForEach loops?

有Switch 和ForEach 的Golang 範本

建構需要動態指令的bash 腳本時,可以將Golang 範本與Switch 和ForEach 結合使用

依賴結構

考慮一個包含類型資訊的依賴結構:

type Dependency struct {
    Name    string
    Type    string
    CWD     string
    Install []Install
}
登入後複製

Bash 腳本模板

Bash 腳本模板

接下來,為bash 腳本建立模板:
#!/bin/bash

{{range $d := .Dependency}}
echo "type is {{$d.Type}}"
echo "cwd is {{$d.CWD}}"
{{range $i := $d.Install}}
echo "install {{$i.name}}"
{{end}}
{{end}}
登入後複製

模板執行

使用模板產生腳本:
package main

import (
    "log"
    "text/template"
    "gopkg.in/yaml.v2"
    "os"
)

// ... (rest of the code unchanged)

func main() {
    // ... (rest of the code unchanged)

    const t = `
#!/bin/bash

{{range .Dependency}}
echo "type is {{.Type}}"
echo "cwd is {{.CWD}}"
{{range .Install}}
echo "install {{.name}}"
{{end}}
{{end}}
`

    tt := template.Must(template.New("").Parse(t))
    err = tt.Execute(os.Stdout, f)
    if err != nil {
        log.Println("executing template:", err)
    }
}
登入後複製

輸出

運行go run main.go 將生成所需的bash 腳本:
#!/bin/bash

echo "type is runner"
echo "cwd is /ui"
echo "install api"

echo "type is runner2"
echo "cwd is /ui2"
echo "install api2"
登入後複製

增強

為了獲得更大的靈活性,請考慮將安裝步驟儲存在單獨的映射中,並根據依賴項類型對其進行插值。這分離了資料所有權並允許更動態的腳本生成。

以上是如何使用 Golang 範本產生帶有 switch 語句和 ForEach 迴圈的動態 bash 腳本?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!