У меня есть довольно простой вопрос о голанге.Учитывая произвольную строку, как я могу выполнить команду bash?
Для произвольной строки, такой как "echo foo"
, или "CGO_ENABLED=0 go build -o ./bin/echo -a main.go"
, что такое идиоматический способ разбора/выполнения этой команды с использованием os/exec
?
Способ, которым я получил эту работу, кажется довольно взломанным, и я ищу более идиоматический подход.
userInput = "CGO_ENABLED=0 go build -o ./bin/echo -a main.go"
command := exec.Command("/bin/bash", "-c", userInput)
out, err := command.Output()
if err != nil {
fmt.Println(err)
}
Если у вас нет правильных правил цитирования, то вам нужно что-то вроде 'f: = strings.Fields (x)' then 'os.Exec'' exec.Command (f [0], f [1:]. ..) 'должен работать. –
Кстати, ваш пример называет переменную «userInput» ... никогда не пропускает пользовательский ввод непосредственно в оболочку (или иначе «запускает» ее), не выполняя строгую проверку/санитарию, если вам не нравится предоставлять полные разрешения текущих процессов кому-либо, кто может обеспечить его ввод. –