0

我提供了一个脚本来处理两件事,捕获标准输出/错误和返回值。我正在使用进程替换:

记录器.sh

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

测试.sh

. ./logger.sh
ls abc

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

运行如下:

bash ./test.sh
4

1 回答 1

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
于 2013-02-28T19:45:58.567 回答