我编写了一个脚本来处理两件事,捕获标准的out/err和返回值。我正在使用过程替换:
logger.sh
exec > >(
cat
echo $?
) 2>&1
test.sh
. ./logger.sh
ls abc
因为我没有一个名为abc的文件,所以我希望看到它为返回代码回显值1
(来自echo $?
)。我读到这将永远不会与过程替代工作。可以将其转换为命名管道吗?这能行吗?
执行如下命令:
bash ./test.sh
试着这样做:
#!/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