【发布时间】:2012-04-12 03:29:49
【问题描述】:
我正在尝试编写一个 bash 脚本,该脚本将启动一个程序 (konsole) 并向其发送 dbus 消息。这是我的实验
konsole &
echo pid is $!
ps aux | grep konsole
qdbus | grep konsole
这个输出
pid is 2726
me 2726 0.0 0.4 45404 9952 pts/0 S+ 14:59 0:00 konsole
org.kde.konsole-2729
qdbus 服务名称始终为org.kde.konsole-{pid+epsilon},但epsilon 部分不可预测。
在我的 bash 脚本中,如何获取我刚刚生成的特定 konsole 实例的确切 qdbus 服务名称?
这是一个令人讨厌的、骇人听闻的解决方案
qdbus | grep konsole | sed 's/[^0-9]//g' > /tmp/before
konsole &
sleep 1
qdbus | grep konsole | sed 's/[^0-9]//g' > /tmp/after
N=`sort /tmp/before /tmp/after | uniq -u`
但肯定有更好的方法!
【问题讨论】: