[英]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.