在我的bash脚本中,我有一个将消息附加到日志文件的功能。它使用如下:
addLogEntry (debug|info|warning|error) message
它生成格式良好的行,包括严重性指示,时间戳和调用函数名称。
我一直在寻找一种方法将一些标准命令(如rm)的输出传递给此函数,同时仍然能够将严重性指定为第一个参数。我也想捕获stdout和stderr。
这可以不使用变量吗?让变量记录一个可测量的日志消息感觉过分,并且它也会阻塞代码。
答案 0 :(得分:2)
您有两种选择:
您可以添加对addLogEntry
函数的支持,使其接受来自标准输入的消息(当没有给出消息参数或者给出-
作为消息时)。
您可以使用Command Substitution运行命令并将其输出捕获为函数的参数:
addLogEntry info "$(rm -v .... 2>&1)"
请注意,这会丢失输出中的任何尾随换行符(如果重要的话)。
答案 1 :(得分:0)
您也可以使用xargs来完成此操作
$ rm -v ... 2>&1 | xargs -I% addLogEntry info %
info removed 'blah1'
info removed 'blah2'
...
对于此命令,将为输入中的每一行调用addLogEntry
。