Расширение оболочки (подстановка команд) в Голанге
Go имеет поддержку расширения переменных, например:
os.ExpandEnv ("test-$ {USER}") `
>> "Тест-MyName"
Но есть ли способ расширения исполняемых файлов, как ведет себя оболочка?
Что-то вроде
os.ExpandExecutable ("test-$ (date +% H:% M)")
>> "Тест-18:20"
Я не могу найти эквивалентный метод для этого, есть ли элегантный способ сделать это вместо того, чтобы вручную извлекать заполнители, выполнять и затем заменять их?
1 ответ
Решение
Для этого нет встроенной функции, но вы можете написать функцию и передать ее 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}
,