情景:shell脚本完成ETL工作。数据的抽取、转换和加载操作对应三个子脚本,均为原子操作,需要记录日志。
思路:通过一个父脚本调用多个子脚本来控制工作流,同时获取子脚本的退出状态和输出。
问题:下面脚本无法获取子脚本的退出状态。需要屏幕有标准输出和错误输出,同时记录到日志。
#!/bin/bash
#parent.sh
echo "You are in parent shell." | tee $0".log"
./child.sh; rc=$? | tee -a $0".log"
echo $rc
#!/bin/bash
#child.sh
echo "You are in child shell."
exit 1
你那样是抓不到第一个命令的退出码的,直接
$?
抓取的是管道最后一个程序的退出码,所以是0
。这个问题可以直接google到: https://stackoverflow.com/que...