2016-01-26 18 views
1

我正在處理腳本,並且我希望輸出被隱藏,除非出現問題。一切都工作正常,除了文件只包含輸出的前幾行,並且所有內容仍然顯示在窗口中。如何將輸出存儲到日誌而不是回顯

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; 

當我檢查installlog文件我得到

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命令審判,得到了類似的結果

+0

「2>&1」究竟做了什麼? –

+0

這種工作,但終端仍然打印「E:無法找到包vvhfdjghdrkj 」,而不是將它放在文件 –

+0

到目前爲止我得到這個「apt-get install $ package -y 2>&1>/var/log/installlog 2>&1「,它的工作原理是如何讓它在終端中,但由於某種原因,當我在腳本中運行該代碼時,它仍然會打印輸出。它仍然把輸出的文件,但我不希望它打印 –

回答

0

請添加此2> & 1也是在這一行

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

要添加stderr也日誌文件。

+0

我得到「bash:$ 1:模棱兩可的重定向」,當我輸入 –

+0

好,所以我得到了它通過把2>&1在兩行中的工作,所以代碼是遵循「apt-get install $ package -y 2>&1 >>/var/log/installlog 2>&1」,然後文件讀取「Reading packages lists ... Building dependency tree ... Reading state information .. E:無法找到包vvhfdjghdrkj「 –

+0

感謝您的幫助! @Varun –

相關問題