我有一个简单的问题。我知道在递归和循环时,shell脚本很慢/无效。
通常,是否可以连续读取输入而不必循环读取/“抓取”部分代码,例如当输入连续且充足时(一种EVENT DRIVEN场景)。
例如, 我使用fedora16(gnome3.2),并且由于未知的原因,大写通知丢失了。我拥有一台上网本,没有指标LED的“奢侈品”。所以我决定编写一个shell脚本,以便在按下大写锁定键时通知我。我想出了一种了解关键状态的方法。
xset -q | grep Caps | awk '{print $4}'
这会给我“开”/“关”作为输出。我可以让循环每秒执行一次(或更少)但这将是一种非常粗暴的方式。
答案 0 :(得分:1)
你写的是事件驱动的。 xset -q
产生一些输出,仅在grep
消耗该输出时(即产生它时)。此时,grep
可能会产生一些输出(仅当它与Caps匹配时),并且仅在这种情况下awk
会处理某些内容。
这里的问题不是bash - “问题”是xset -q
。它不是为了不断提供输出而设计的。它被设计为一次性输出命令。
要触摸问题的其他部分 - 如果您确实需要一个指标,请查看此处:
各种指标的绝佳来源。其中一个是Keylock指标(搜索上面的页面以查看更多信息):
以上链接来自askubuntu.com,即它是以Ubuntu为中心的,但上面似乎也适用于Fedora:
从上面的帖子(this post几个):
su -
yum install lock-keys-applet
exit
killall -HUP gnome-panel
希望这有帮助。