我正在编写一个bash脚本,用于检索文件夹列表的明显磁盘使用情况:
du -sb /logs
du -sb /var/xyz
du -sb /usr/local/bin
如果存在目录,则输出为:
98983493 /logs
1489872 /usr/local
...但如果没有,则输出可能是:
> cannot read directory `/logs': Permission denied
> cannot access `/usr/local': No such file or directory
我必须解析回复;我可以为错误消息添加前缀以使其更容易吗?我宁愿处理一个错误标识符而不是一个错误标识符;像这样......
**error** cannot read directory `/logs': Permission denied
**error** cannot access `/usr/local': No such file or directory
脚本绝对是我的弱点,我承认除了快速搜索之外没有尝试过任何东西。
限制
答案 0 :(得分:2)
您可以通过将stderr重定向到process substitution:
来使用bash完成此操作(
echo stderr >&2
echo stdout
echo stdout2
echo stderr2 >&2
) 2> >( sed 's/^/**error**/')
stdout
stdout2
**error**stderr
**error**stderr2
看起来你丢失了stdout和stderr的交错,但你保持它们的相对排序。