获取linux脚本命令执行的命令的退出代码

获取linux脚本命令执行的命令的退出代码

注意这是在 debian linux 环境上运行的

我有以下名为 HelloWorld.sh 的示例脚本

#!/bin/bash

echo "Hello World"
exit 1

然后我运行以下命令

script -c ./HelloWorld.sh foo ; echo $?

$?返回 0,这是预期的,因为脚本命令本身已成功运行。但是,我想要返回代码 HelloWorld.sh,如果我只是运行以下命令,该返回代码将为 1。

bash HelloWorld.sh ; echo $?

查看手册页,我发现脚本命令不会返回任何内容,因此以下内容也无济于事

return_code=`script -c ./HelloWorld.sh foo`

我想问的问题是,在脚本命令的上下文中运行HelloWorld.sh时,是否有一种方法可以获得它的返回值,例如将退出值发送到父shell。如果没有,您建议如何做?

关于如果我不能使用脚本命令我会如何做的可能答案

  1. 让 HelloWorld.sh 使用 shm API 写入共享内存
  2. 将 HelloWorld.sh 写入文件

两种方法都需要分别清理共享内存对象和文件,所以我想询问我自己的个人知识是否有更简单的解决方案

答案1

来自脚本的手册页

 -e, --return
         Return the exit code of the child process.  Uses the same format
         as bash termination on signal termination exit code is 128+n.

所以这应该有效

$ script -e -c ./HelloWorld.sh; echo $?
Script started, file is typescript
Hello World
Script done, file is typescript
1

答案2

人脚本,

   -e, --return
          Return the exit code of the child process.  Uses the same format
          as bash termination on signal termination exit code is 128+n.

相关内容