【问题标题】:Bash script not recording full outputBash 脚本未记录完整输出
【发布时间】:2016-09-19 02:49:21
【问题描述】:

我使用下面的 Bash 脚本更新 OSX 上的软件,并在必要时重新启动。

奇怪的是,当发现不需要软件更新时,运行脚本的输出和日志都不包含部分输出。

例如,如果我在不需要更新的机器上运行以下命令,我会看到:

% softwareupdate -i -a
Software Update Tool
Copyright 2002-2012 Apple Inc.

Finding available software
No updates are available.

最后一行“没有可用的更新”是未记录到以下脚本的日志文件中的内容:

#!/bin/bash
PATH=/bin:/usr/bin:/sbin:/usr/sbin export PATH 
SWLOG=/var/log/swupdate.log

(

echo "################ SoftwareUpdate Script Beginning at $(date) ################"

echo "Script Name: $(basename -- "$0") "

softwareupdate -l | grep -i "restart"

if [[ $? -eq 0 ]] #reboot will be needed

    then 

        echo "Software update requiring reboot is needed"
        echo "Starting..."
        softwareupdate -i -a
        echo "################ Rebooting at $(date) ################"
        reboot

    else 

        echo "No reboot needed. Updates will be applied if needed..."
        softwareupdate -i -a    
        echo "################ SoftwareUpdate Script Ending at $(date) ################"
        echo 

fi
exit 0

) | tee -a $SWLOG

相反,日志显示:

################ SoftwareUpdate Script Beginning at Sat May 21 19:37:44 PDT 2016 ################
Script Name: swupdate.sh 
No reboot needed. Updates will be applied if needed...
Software Update Tool
Copyright 2002-2012 Apple Inc.

Finding available software
################ SoftwareUpdate Script Ending at Sat May 21 19:38:33 PDT 2016 ################

并省略“没有可用的更新”。

任何想法,建议为什么会发生这种情况?我想记录下这个重要的细节。

提前致谢,丹

【问题讨论】:

  • 可能是因为在脚本中找不到“没有可用的更新”字符串?
  • @n.m.请解释一下
  • 我认为“没有可用的更新”可能已发送到标准错误。你试过softwareupdate -i -a 2>&1

标签: bash macos shell unix stderr


【解决方案1】:

由于您将输出传递给tee 命令,因此仅传递标准输出。标准错误被忽略。看起来softwareupdate 将“无可用更新”部分发送到标准错误。因此将标准错误重定向到标准输出将解决您的问题。

softwareupdate -i -a  2>&1

另一种方法是使用|&2>&1 | 的简写)代替|,这会将标准错误重定向到标准输出,然后将输出通过管道传送到tee 命令。

(your_commands) |& tee -a $SWLOG

【讨论】:

  • 这就是问题所在,谢谢!但是我的 tee 命令不喜欢那种简写,所以我的脚本中需要 2>&1 。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-16
  • 1970-01-01
  • 1970-01-01
  • 2017-11-21
  • 2014-07-07
  • 1970-01-01
相关资源
最近更新 更多