dbus-monitorの出力を調整する方法は?

dbus-monitorの出力を調整する方法は?

私はGNUツールとbashを使用してマイクロサービスアプリケーションを構築しており、サービス間でIPCを使用しdbus-monitordbus-send実行することにしました。問題は、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

文字列のみが必要な場合は、dbus-monitorコマンドの末尾に「type = string」を式として追加してください。

関連情報