我正在使用 GNU 工具和 bash 构建一个微服务应用程序,我决定在服务之间使用dbus-monitor
和dbus-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 命令的末尾。