我想做:
1.sh
:
#!/usr/bin/env bash
set -eu
r=0
a=$(./2.sh || r=$?)
echo "$a"
echo "$r"
2.sh
:
#!/usr/bin/env bash
echo output
exit 2
但是它输出:
$ ./1.sh
output
0 # I'd like to have `2` here
由于$(...)
运行一个单独的外壳。那么,如何捕获出口代码和输出呢?
调用另一个进程的进程的退出代码是被调用进程中的一个。
$($($($($(exit 2)))))
echo $?
2
这里有5个呼叫级别。
在您的情况下:
r=0
a=$(./2.sh)
r=$?
echo "$a"
echo "$r"
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句