Golang 템플릿, Switch 및 ForEach를 사용한 Bash 스크립트 생성
도전
목표 Golang 프로그램에서 Bash 스크립트를 만드는 것입니다. 스크립트는 종속성을 반복하고, 스위치 문을 사용하여 해당 유형을 식별하고, 유형에 따라 다른 명령을 에코해야 합니다.
구현
이를 달성하기 위해 다음을 사용할 수 있습니다. 구조화된 데이터에서 텍스트 파일을 생성하는 편리한 방법을 제공하는 Go 템플릿입니다. 다음은 스위치와 ForEach가 포함된 템플릿을 사용하는 솔루션입니다.
<code class="go">package main import ( "log" "text/template" "gopkg.in/yaml.v2" "os" ) type File struct { TypeVersion string `yaml:"_type-version"` Dependency []Dependency `yaml:"dependency"` } type Dependency struct { Name string `yaml:"name"` Type string `yaml:"type"` CWD string `yaml:"cwd"` Install map[string]string `yaml:"install"` } var data = ` _type-version: "1.0.0" dependency: - name: ui type: runner cwd: /ui install: - name: api - name: ui2 type: runner2 cwd: /ui2 install: - name: api2 ` 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 "runner": echo "running command for runner" case "runner2": echo "running command for runner2" 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>
설명
출력
위 프로그램을 실행하면 다음과 같은 출력이 생성됩니다.
#!/bin/bash type is runner running command for runner type is runner2 running command for runner2
위 내용은 Golang 템플릿, 스위치 문 및 ForEach 루프를 사용하여 종속성 유형을 기반으로 특정 명령이 포함된 Bash 스크립트를 어떻게 생성합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!