>  기사  >  백엔드 개발  >  스위치 문과 ForEach 루프가 포함된 동적 bash 스크립트를 생성하는 데 Golang 템플릿을 어떻게 사용할 수 있나요?

스위치 문과 ForEach 루프가 포함된 동적 bash 스크립트를 생성하는 데 Golang 템플릿을 어떻게 사용할 수 있나요?

DDD
DDD원래의
2024-10-30 03:48:03611검색

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

Switch 및 ForEach가 포함된 Golang 템플릿

동적 명령이 필요한 bash 스크립트를 구성할 때 스위치 및 ForEach와 함께 Golang 템플릿을 활용할 수 있습니다. loops.

종속성 구조

유형 정보가 포함된 종속성 구조를 고려하세요.

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

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"

개선 사항

유연성을 높이려면 설치 단계를 별도의 맵에 저장하고 종속성 유형에 따라 보간하는 것을 고려해 보세요. 이를 통해 데이터 소유권이 분리되고 보다 동적인 스크립트 생성이 가능해집니다.

위 내용은 스위치 문과 ForEach 루프가 포함된 동적 bash 스크립트를 생성하는 데 Golang 템플릿을 어떻게 사용할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.