【发布时间】:2019-10-10 01:46:02
【问题描述】:
我想为 cron 编写一个单行代码:
- 将 STDOUT 和 STDERR 重定向到记录器
- 测试命令是否失败
- 如果发生这种情况,请执行操作
我有一个脚本,它会打印一些东西然后严重退出。
script.sh:
SCRIPT=`basename "$0"`
echo $SCRIPT is running...
\>&2 echo $SCRIPT has failed!
exit 1
当我在没有管道到记录器的情况下运行脚本时,一切都很好。当我将所有内容通过管道传输到记录器以供日后查看时,错误检查失败。有没有办法让管道和错误检查同时工作?
\>script.sh
script.sh is running...
script.sh failed!
\>script.sh || echo foo
script.sh is running...
script.sh failed!
foo
\>script.sh 2>&1 | logger || echo foo
\>
【问题讨论】:
-
检查
logger是否在cron的PATH 上,或使用其完整路径。 -
记录器的管道工作正常。问题是,一旦我通过管道传输到记录器,错误条件不再触发命令的后半部分(echo foo)。
标签: bash pipe stderr error-checking