Shell 当脚本失败时,它不会';“不要做回声”;“文本”&燃气轮机&燃气轮机;文件

Shell 当脚本失败时,它不会';“不要做回声”;“文本”&燃气轮机&燃气轮机;文件,shell,scripting,echo,Shell,Scripting,Echo,我有一个脚本,在它的开头和结尾,有一个: echo "start" >> log echo "end" >> log 原因是,当脚本无法控制地失败时,我在日志文件中看不到任何行。但是,当脚本正确完成时,日志在日志中可见 有人知道为什么会这样吗?您需要将错误输出(2)指向标准标准标准输出: echo "start" >> log 2>&1 echo "end" >> log 2>&1 因为标准的stderr是2,所以

我有一个脚本,在它的开头和结尾,有一个:

echo "start" >> log 
echo "end" >> log
原因是,当脚本无法控制地失败时,我在日志文件中看不到任何行。但是,当脚本正确完成时,日志在日志中可见


有人知道为什么会这样吗?

您需要将错误输出(2)指向标准标准标准输出:

echo "start" >> log 2>&1
echo "end" >> log 2>&1

因为标准的stderr是2,所以默认的日志输出只显示来自1的stdout。进行测试并显示结果。如果将所有脚本仅发送到一行日志,请在定义日志文件后执行此操作:

log_file="/tmp/script.log"
exec >> $log_file 2>&1

欢迎加入。请阅读并
我在日志中没有看到任何行
-您没有在日志文件中看到
开始
,“为什么”可能是很多事情;也许您启动了一个单独的程序,在退出非零时删除
log
。如果你不给我们看,我们怎么知道?我们不需要/不需要您的实际代码,但我们需要尽可能短的代码,让我们自己在运行时体验特定问题,并在修复时进行测试。如果
echo直接发出的stdout无法写入文件,为什么stderr的行为会有任何不同呢?他们说,在发生错误后,即使是
start
行也不在输出文件中。那条线在标准线上,不是标准线上。为什么您希望重定向stderr会对输出文件是否包含
start
产生任何影响?顺便说一句,您可以选择编辑现有答案,而不是添加其他答案