Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在bash中连续读取输入_Bash - Fatal编程技术网

在bash中连续读取输入

在bash中连续读取输入,bash,Bash,我有一个简单的问题。我知道shell脚本在递归和循环时速度慢/效率低 通常,可以连续读取输入,而不必循环代码的读取/“抓取”部分,例如,当输入连续且大量时(一种事件驱动的场景) 比如,,, 我使用fedora16(gnome3.2),由于未知原因,capslock通知丢失。我有一台上网本,没有“奢侈”的LED指示灯。因此,我决定编写一个shell脚本,在按下capslock键时通知我。我想出了一个知道关键状态的方法 xset -q | grep Caps | awk '{print $4}'

我有一个简单的问题。我知道shell脚本在递归和循环时速度慢/效率低

通常,可以连续读取输入,而不必循环代码的读取/“抓取”部分,例如,当输入连续且大量时(一种事件驱动的场景)

比如,,, 我使用fedora16(gnome3.2),由于未知原因,capslock通知丢失。我有一台上网本,没有“奢侈”的LED指示灯。因此,我决定编写一个shell脚本,在按下capslock键时通知我。我想出了一个知道关键状态的方法

xset -q | grep Caps | awk '{print $4}'

这将给我“开”/“关”作为输出。我可以让循环每一秒(或更短)执行一次,但这是一种非常粗糙的方法

您编写的是事件驱动的
xset-q
生成一些输出,只有在该点(即生成时)被
grep
消耗。此时,
grep
可能会产生一些输出(仅当它与Caps匹配时),并且只有在这种情况下,
awk
才会处理某些内容

这里的问题不是bash,“问题”是
xset-q
。它不是为了不断地给你输出而设计的。它被设计为一个一次性输出命令

要触及问题的另一部分-如果您实际上只需要一个指标,请查看此处:

各种指标的优秀来源。其中一个是钥匙锁指示器(搜索上面的页面以查看更多信息):

上面的链接来自askubuntu.com,即它以Ubuntu为中心,但上面的链接似乎也适用于Fedora:

从上述螺纹(通过fewt):


希望这能有所帮助。

这并不能解决您的bash问题,但您可能希望使用类似这样的方法:或者谢谢!我的另一部分有Ubuntu。我以前使用过指示键锁:)(事实上,当我第一次开始编写脚本时,我就想到了这个应用程序)。锁钥匙小程序不再出现在官方回购协议上了。(它一开始就存在吗?)。我想出了一个办法。我想我会绑定capslock键,以便在每次按下时运行脚本。那会容易得多:)但我不知道怎么做!内置键盘快捷键应用程序将只接受多个组合键:(
su -
yum install lock-keys-applet
exit
killall -HUP gnome-panel