在 bash 脚本输出中捕获退出代码到屏幕并记录
catch exit code in bash script output to screen and log
我正在尝试合并 2 条单独工作的线路,但我无法让它们一起工作。要捕获并退出 1 的代码:
Python script.py > /logfile.log 2>&1
ret=$?
if [ $ret -ne 0 ]; then
exit $ret
fi
将脚本结果输出到屏幕和日志文件:
Python script.py 2>&1 | tee /logfile.log
我想结合这 2 个命令,以便脚本将输出到屏幕和日志文件,并且还会捕获退出代码 1 以在脚本失败时中止脚本。我尝试以不同的方式组合它们,但脚本要么继续 运行,要么没有任何内容输出到屏幕。可以这样做吗?
使用数组 PIPESTATUS:
Python script.py 2>&1 | tee /logfile.log
ret="${PIPESTATUS[0]}"
if [[ "$ret" -ne "0" ]]; then
exit "$ret"
fi
来自man bash
:
PIPESTATUS
: An array variable (see Arrays below) containing a list of exit status values from the processes in the most-
recently-executed foreground pipeline (which may contain only a single command).
我正在尝试合并 2 条单独工作的线路,但我无法让它们一起工作。要捕获并退出 1 的代码:
Python script.py > /logfile.log 2>&1
ret=$?
if [ $ret -ne 0 ]; then
exit $ret
fi
将脚本结果输出到屏幕和日志文件:
Python script.py 2>&1 | tee /logfile.log
我想结合这 2 个命令,以便脚本将输出到屏幕和日志文件,并且还会捕获退出代码 1 以在脚本失败时中止脚本。我尝试以不同的方式组合它们,但脚本要么继续 运行,要么没有任何内容输出到屏幕。可以这样做吗?
使用数组 PIPESTATUS:
Python script.py 2>&1 | tee /logfile.log
ret="${PIPESTATUS[0]}"
if [[ "$ret" -ne "0" ]]; then
exit "$ret"
fi
来自man bash
:
PIPESTATUS
: An array variable (see Arrays below) containing a list of exit status values from the processes in the most- recently-executed foreground pipeline (which may contain only a single command).