注意这是在 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。如果没有,您建议如何做?
关于如果我不能使用脚本命令我会如何做的可能答案
- 让 HelloWorld.sh 使用 shm API 写入共享内存
- 将 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.