如何调整dbus-monitor的输出?

如何调整dbus-monitor的输出?

我正在使用 GNU 工具和 bash 构建一个微服务应用程序,我决定在服务之间使用dbus-monitordbus-send进行 IPC。问题是很难利用收到的消息,dbus-monitor因为它将元数据和有效负载分割在不同的行中。

如果我实例化一个侦听器

dbus-monitor --system interface=org.foo.bar member=test \
 | while read a; do
  echo got message $a
done

并与之沟通

dbus-send --system --type=signal / org.foo.bar.test string:"hello world"

输出如下

got line signal time=1676042614.782238 path=; interface=org.foo.bar; member=test
got line string "hello world"

尽管string "hello world"是消息的有效负载,但它是写在不同的行中的。

我尝试搞乱 IFS 但没有成功。我也尝试将参数更改为dbus-monitor,但该参数--profile省略了有效负载。所以我不知道如何解决这个问题。

答案1

如果您只需要字符串,请将“type=string”作为表达式添加到 dbus-monitor 命令的末尾。

相关内容