在源日志记录脚本中捕获返回值

时间:2013-02-28 19:40:12

标签: bash

我使用脚本来处理两件事,捕获标准输出/错误并返回值。我正在使用流程替换:

logger.sh

exec > >(
 cat
 echo $?
) 2>&1

test.sh

. ./logger.sh
ls abc

因为我没有名为abc的文件,所以我希望看到这个回显值1(来自echo $?)返回代码。我读到这将永远不会与进程替换。这可以转换为命名管道吗?这有用吗?

运行如下:

bash ./test.sh

1 个答案:

答案 0 :(得分:0)

尝试这样做:

#!/bin/bash

trap 'echo "DEBUG[$?]" | tee /tmp/log' ERR

xxxx # a non existent command

如果您已经有trap,则可以执行此操作:

#!/bin/bash

trap 'echo "DEBUG[$?]" | tee /tmp/log; do_something_else' ERR 0 1 2 3 15

xxxx # a non existent command