当前位置: > > > > 记录命令的退出代码
来源:stackoverflow
2024-04-22 22:42:37
0浏览
收藏
小伙伴们有没有觉得学习Golang很有意思?有意思就对了!今天就给大家带来《记录命令的退出代码》,以下内容将会涉及到,若是在学习中对其中部分知识点有疑问,或许看了本文就能帮到你!
问题内容
我正在尝试使用以下代码行在 go 中运行命令。
cmd := exec.Command(shell, `-c`, unsliced_string) cmd.Stderr = os.Stderr cmd.Stdout = os.Stdout cmd.Stdin = os.Stdin cmd.Run()
变量 shell 是从 os.getenv(“$shell”) 收集的 变量 unsliced_string 是从命令行输入的参数。
我需要命令运行后的状态/错误代码。
因此,如果正在运行的命令(从命令)是 exit 100
,我需要保存一个变量来保留错误状态代码,在本例中为 100
总的来说,我需要一个变量来记录命令运行的错误代码
我尝试过使用 .error() 但它的 exit 状态为 100
而不仅仅是 100
作为最后的手段,我只能使用 strings.replaceall 或 strings.trim
正确答案
当然,有两种方法:
cmd := exec.command(shell, `-c`, unsliced_string) err := cmd.run() if exiterr, ok := err.(*exec.exiterror); ok { exitcode := exiterr.exitcode() fmt.println(exitcode) } else if err != nil { // another type of error occurred, should handle it here // eg: if $shell doesn't point to an executable, etc... }
cmd := exec.Command(shell, `-c`, unsliced_string) _ := cmd.Run() exitCode := cmd.ProcessState.ExitCode() fmt.Println(exitCode)
我强烈建议使用第一个选项,这样您就可以捕获所有 exec.exiterror
并按照您想要的方式处理它们。如果命令尚未退出或者底层命令由于另一个错误而从未运行,则不会填充 cmd.processstate,因此使用第一个选项更安全。
今天带大家了解了的相关知识,希望对你有所帮助;关于Golang的技术知识我们会一点点深入介绍,欢迎大家关注公众号,一起学习编程~