Ниже приведен код, который я пытаюсь выполнить для сценария оболочки через golang.
func Shellout(command string) (string, string,error) {
var stdout bytes.Buffer
var stderr bytes.Buffer
cmd := exec.Command(ShellToUse, "-c", command)
cmd.Stdout = &stdout
cmd.Stderr = &stderr
err := cmd.Run()
return stdout.String(), stderr.String(), err
}
Он работает нормально. Но я хочу получить статус возврата (а не статус выхода) функции оболочки (я возвращаю «1» или «2» в соответствии с моим логином скрипта оболочки c).
Я не знаю как захватить это.
Я попробовал следующее:
func Shellout2(command string) (string,string,error) {
var stdout2 bytes.Buffer
// var stderr2 bytes.Buffer
cmd2 := exec.Command(ShellToUse, "-c", command)
cmd2.Stdout = &stdout2
// cmd.Stderr = &stderr2
err2 := cmd2.Run()
cmd2 = exec.Command(ShellToUse, "-c", "echo $?")
exitStatus := cmd2.Run()
return stdout2.String(),(string)exitStatus,err2
}
Я не получаю вывод. golang говорит "синтаксическая ошибка: неожиданное завершение exitStatus в конце оператора".