Heim  >  Artikel  >  Backend-Entwicklung  >  Wie erstelle ich ein benutzerdefiniertes Bash-Skript mithilfe von Go-Vorlagen, Switch-Case-Anweisungen und YAML-Daten?

Wie erstelle ich ein benutzerdefiniertes Bash-Skript mithilfe von Go-Vorlagen, Switch-Case-Anweisungen und YAML-Daten?

Barbara Streisand
Barbara StreisandOriginal
2024-10-29 04:18:29232Durchsuche

How to Generate a Customized Bash Script Using Go Templates, Switch-Case Statements, and YAML Data?

Golang-Vorlage mit Switch & ForEach

Problem: Erstellen Sie ein Bash-Skript aus einem Golang-Programm, das eine Liste von Abhängigkeiten durchläuft und deren überprüft Typen und gibt benutzerdefinierte Befehle basierend auf diesen Typen mithilfe von Switch-Case-Anweisungen aus.

Antwort:

Der folgende aktualisierte Golang-Code erreicht das gewünschte Verhalten:

<code class="go">package main

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

type File struct {
    TypeVersion string `yaml:"_type-version"`
    Dependency []Dependency
}

type Dependency struct {
    Name    string
    Type    string
}

func main() {
    f := File{}

    err := yaml.Unmarshal([]byte(data), &f)
    if err != nil {
        log.Fatalf("error: %v", err)
    }

    const t = `
#!/bin/bash
{{range .Dependency}}
echo "type is {{.Type}}"
{{switch .Type}}
  case "runner1":
    echo "Submitting api1"
  case "runner2":
    echo "Submitting api2"
  default:
    echo "Unknown type"
{{end}}
{{end}}
`

    tt := template.Must(template.New("").Parse(t))
    err = tt.Execute(os.Stdout, f)
    if err != nil {
        log.Println("executing template:", err)
    }
}</code>

Erklärung:

  • Der Code verwendet Text/Vorlage, um die Ausgabezeichenfolge zu formatieren.
  • Das Schlüsselwort „range“ iteriert über das Dependency-Array.
  • Innerhalb der Schleife wird ein Switch-Case-Block verwendet, um die Ausgabe basierend auf dem Typ der Abhängigkeit anzupassen.
  • Die Case-Anweisungen verarbeiten bestimmte Typwerte und geben die gewünschten Befehle aus.
  • Der Standardfall behandelt Typen, die nicht speziell definiert sind.

Ergebnis:

Das von diesem Code erstellte Beispiel-Bash-Skript ist:

<code class="bash">#!/bin/bash

echo "type is runner"
Submitting api1


echo "type is runner2"
Submitting api2</code>

Zusätzliche Überlegungen:

  • Die YAML-Beispieldaten sind in der Datenvariablen fest codiert. In einem realen Szenario könnte dies aus einer Datei oder Datenbank geladen werden.
  • Die API-Zuordnung (vom Typ zum Befehl) könnte zur Verbesserung der Flexibilität als Zuordnung oder separate Konfigurationsdatei implementiert werden.
  • Die Felder cwd und Install in der Abhängigkeitsstruktur werden in dieser Lösung nicht verwendet, da sie für die Demo nicht erforderlich waren.

Das obige ist der detaillierte Inhalt vonWie erstelle ich ein benutzerdefiniertes Bash-Skript mithilfe von Go-Vorlagen, Switch-Case-Anweisungen und YAML-Daten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn