繁体   English   中英

在脚本中运行脚本时,如何在bash中获取任何退出代码?

[英]How do get any exit code in bash when running a script inside a script?

我正在尝试运行一个脚本,在该脚本中我运行另一个脚本,在该脚本运行后,我想检索退出代码并对其执行某些操作,但是每次我只会得到0

我还尝试了不同的方法来寻找它或将命令包装在函数中,并且还使用chmod -x赋予了这两个执行权限。

#!/usr/bin/env bash

mkdir data
mkdir -p data/test

b.sh

#!/usr/bin/env bash

set -x

(bash a.sh) &
pid=$!

wait $pid
exitCode=$?

echo $pid
echo $exitCode

bash b.sh结果:

+ pid=7399
+ wait 7399
+ bash a.sh
mkdir: data: File exists
+ exitCode=0
+ echo 7399
7399
+ echo 0
0

bash a.sh结果:

mkdir: data: File exists (no exit code)

结果与mkdir data

mkdir: data: File exists (exit code 1)

我知道我可以执行mkdir -p data但这只是一个测试,以获取以后可以在脚本中使用的所有退出代码。

Bash版本:GNU bash,版本3.2.57(1)-发行版(x86_64-apple-darwin18)

使用以下命令解决了它: set -e

参考: https//ss64.com/bash/set.html

这样可以在出现问题时立即退出。 在我的情况下,第二条命令返回0,这就是为什么我每次都得到0的原因。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM