【问题标题】:Redirection of STDERR to STDOUT and then to a file将 STDERR 重定向到 STDOUT,然后重定向到文件
【发布时间】:2015-12-28 15:25:50
【问题描述】:

我正在使用以下代码写入一个名为maintainence.log的文件

`LOCALHOST:>less wrap.sh | grep avsp

avsp=$(df -kh | grep "/global/backups" | awk -F " " '{ print $4 }'2>&1
echo "Info $DATE: Available diskspace $avsp" >> maintainence.log
但是当我运行脚本 wrap.sh LOCALHOST:>./wrap.sh 我得到以下输出:

df: `/lfs/wwwmnt/lt2-p-web-intra1': Stale NFS file handle
df: `/lfs/wwwmnt/lt2-p-web-intra1': Stale NFS file handle

但是,我的意图是将错误和 STDout 写入文件 maintainence.log

【问题讨论】:

    标签: shell scripting stdout stderr io-redirection


    【解决方案1】:

    你基本上是在说:

    var=$(command) >> maintainence.log 2>&1
    

    这样重定向不会影响command的执行。相反,将重定向放在$() 中,以将stderr 重定向到stdout 和echo 稍后:

    var=$(command 2>&1)
    echo "$var" >> maintenance.log
    

    在你的情况下:

    avsp=$(df -kh | grep "/global/backups" | awk -F " " '{ print $4 }' 2>&1)
    echo "Info $DATE: Available diskspace $avsp" >> maintainence.log 
    

    【讨论】:

    • 感谢您的信息。我已经进行了建议的更改: avsp=$(df -kh | grep "/global/backups" | awk -F " " '{ print $4 }' 2>&1) echo "Info $DATE: Available diskspace $avsp" >> maintenance.log 但是 O/p 仍然相同,它没有写入maintainece.log O/p-df: `/lfs/wwwmnt/lt2-p-web-intra1': 过时的 NFS 文件句柄
    • @VinayThupili 我感觉你使用了太多的反引号。请编辑您的原始问题并粘贴您正在使用的确切命令。
    • @VinayThupili 正如我刚才所说:编辑您的问题,显示您正在使用的 exact 命令。我无法理解 cmets 中的代码。
    • @VinayThupili 我在这里失去了耐心。我说了三遍我无法理解您在 cmets 中发布的代码,因此请编辑您的原始问题并将它们放在那里。否则我不会再检查这个了。
    • 我已经编辑了问题请查看并告诉我,对不起,我是 StackOverflow 的新手,无法以所需的方式编辑问题。或者让我知道您的邮件 ID,以便我可以邮寄给您。
    猜你喜欢
    • 2014-07-22
    • 2019-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-28
    • 2022-01-18
    • 2012-08-07
    • 1970-01-01
    相关资源
    最近更新 更多