簡體   English   中英

Golang中的Shell擴展(命令替換)

[英]Shell Expansion (Command substitution) in Golang

Go支持變量擴展 ,例如:

os.ExpandEnv(“ test- $ {USER} ”)`

>>“ test-MyName”

但是,有沒有一種方法可以擴展可執行文件 ,就像shell的行為一樣?

就像是

os.ExpandExecutable(“ test- $(date +%H:%M) ”)

>>“測試18:20”

我找不到與此等效的方法,是否有一種優雅的方法來執行此操作,而不是手動提取占位符,執行然后替換它們?

沒有內置函數,但是您可以編寫一個函數並將其傳遞給os.Expand()

package main

import (
    "fmt"
    "os"
    "os/exec"
    "strings"
)

func RunProgram(program string) string {
    a := strings.Split(program, " ")
    out, err := exec.Command(a[0], a[1:]...).Output()
    if err != nil {
        panic(err)
    }
    return string(out)
}

//然后將其稱為:

func main() {
    s := os.Expand("test-${date +%H:%M}", RunProgram)
    fmt.Print(s)
}

輸出:

test-13:09

注意os.Expand()需要大括號,即${command args args args}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM