【问题标题】:how to store the output to a log instead of echo如何将输出存储到日志而不是回显
【发布时间】:2016-01-26 16:53:57
【问题描述】:

我正在编写一个脚本,我希望隐藏输出,除非出现问题。一切正常,除了文件只包含前几行输出并且所有内容仍显示在窗口中。

elif [ $input = "3" ]; then  
    echo "enter package name"
    read package
    apt-get build-dep $package
    apt-get install $package -y >> /var/log/installlog
    exitstatus=$(echo $?)
    if [ $exitstatus = "0" ]; then
        figlet Installation Successful
    else
        echo "Failure check /var/log/installlog"
        figlet check now?
        echo "y or n"
        read input2
            if [ $input2 = "y" ]; then
                cat /var/log/installlog
            fi;
    fi;

当我检查安装日志文件时,我得到了

Reading package lists...
Building dependency tree...
Reading state information...
Reading package lists...
Building dependency tree...
Reading state information...
Reading package lists...
Building dependency tree...
Reading state information...

我尝试过使用 tee 命令并得到了类似的结果

【问题讨论】:

  • “2>&1”到底是做什么的?
  • 这种工作,但终端仍然打印“E: Unable to locate package vvhfdjghdrkj”而不是将其放入文件中
  • 到目前为止,我得到了这个“apt-get install $package -y 2>&1> /var/log/installlog 2>&1”,它可以在终端中按我想要的方式工作,但对于某些人来说原因当我在脚本中运行该代码时,它仍然会打印输出。它仍然将输出放在文件中,但我不希望它打印

标签: linux bash logging scripting


【解决方案1】:

请在此行中添加此 2>&1

      apt-get install $package -y >> /var/log/installlog 2>&1

添加 stderr 也有日志文件。

【讨论】:

  • 当我输入时我得到“bash: $1: ambiguous redirect”
  • 好的,所以我通过在两行中都放 2>&1 让它工作,所以代码如下“apt-get install $package -y 2>&1 >> /var/log/installlog 2> &1”,然后文件读取“正在读取包列表...构建依赖树...正在读取状态信息... E:无法找到包 vvhfdjghdrkj”
  • 感谢您的帮助! @Varun
猜你喜欢
  • 2019-02-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-24
  • 1970-01-01
  • 2017-05-19
  • 2020-03-30
  • 2018-12-19
相关资源
最近更新 更多