仅使用错误消息的前缀自定义命令响应

时间:2014-01-03 19:37:03

标签: linux bash shell scripting

我正在编写一个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

脚本绝对是我的弱点,我承认除了快速搜索之外没有尝试过任何东西。

限制

  • 不能使用sed / awk或类似的工具;只有标准的linux命令。
  • 文件系统是只读的;不能写。

1 个答案:

答案 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的交错,但你保持它们的相对排序。

相关问题