dbus-monitor의 출력을 조정하는 방법은 무엇입니까?

dbus-monitor의 출력을 조정하는 방법은 무엇입니까?

저는 GNU 도구와 bash를 사용하여 마이크로서비스 애플리케이션을 구축 중이며 서비스 간에 IPC를 사용 dbus-monitor하고 dbus-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"을 표현식으로 추가하세요.

관련 정보