Golang テンプレートを使用して、switch ステートメントと ForEach ループを含む動的 bash スクリプトを生成するにはどうすればよいですか?

DDD
リリース: 2024-10-30 03:48:03
オリジナル
614 人が閲覧しました

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

Switch および ForEach を使用した Golang テンプレート

動的コマンドを必要とする bash スクリプトを構築する場合、Golang テンプレートをスイッチおよび ForEach と組み合わせて利用できます。ループ。

依存関係構造

型情報を含む依存関係構造体を考えます:

type Dependency struct {
    Name    string
    Type    string
    CWD     string
    Install []Install
}
ログイン後にコピー

Bash Script Template

次に、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 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!