Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimanakah templat Golang boleh digunakan untuk menjana skrip bash dinamik dengan penyataan suis dan gelung ForEach?

Bagaimanakah templat Golang boleh digunakan untuk menjana skrip bash dinamik dengan penyataan suis dan gelung ForEach?

DDD
DDDasal
2024-10-30 03:48:03611semak imbas

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

Templat Golang dengan Suis & ForEach

Apabila membina skrip bash yang memerlukan arahan dinamik, seseorang boleh menggunakan templat Golang bersama-sama dengan suis dan ForEach gelung.

Struktur Kebergantungan

Pertimbangkan struct kebergantungan yang mengandungi maklumat jenis:

type Dependency struct {
    Name    string
    Type    string
    CWD     string
    Install []Install
}

Templat Skrip Bash

Seterusnya, buat templat untuk skrip 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}}

Pelaksanaan Templat

Untuk menjana skrip menggunakan templat:

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

Output

Menjalankan go run main.go akan menghasilkan skrip bash yang diingini:

#!/bin/bash

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

echo "type is runner2"
echo "cwd is /ui2"
echo "install api2"

Peningkatan

Untuk lebih fleksibiliti, pertimbangkan untuk menyimpan langkah pemasangan dalam peta berasingan dan menginterpolasinya berdasarkan jenis pergantungan. Ini memisahkan pemilikan data dan membolehkan penjanaan skrip yang lebih dinamik.

Atas ialah kandungan terperinci Bagaimanakah templat Golang boleh digunakan untuk menjana skrip bash dinamik dengan penyataan suis dan gelung ForEach?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn