Получить возвращаемое значение (не состояние выхода) функции оболочки через пакет os / exe c - PullRequest
0 голосов
/ 29 апреля 2020

Ниже приведен код, который я пытаюсь выполнить для сценария оболочки через 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 в конце оператора".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...