将STDERR重定向到STDOUT,然后重定向到文件

时间:2015-12-28 15:25:50

标签: shell scripting stdout stderr io-redirection

我使用以下代码写入名为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

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

1 个答案:

答案 0 :(得分: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 
相关问题