shell如何获取子shell退出状态的同时重定向输出到文件?

情景: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
阅读 3.8k
1 个回答
./child.sh | tee -a "$0.log"
echo ${PIPESTATUS[0]}

你那样是抓不到第一个命令的退出码的,直接$?抓取的是管道最后一个程序的退出码,所以是0

这个问题可以直接google到: https://stackoverflow.com/que...

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进