我正在尝试在 Linux 系统上编写一个 bash 脚本(顺便说一下,这是很新的编写方法),我基本上希望它每 5 秒执行一个命令,而另一个命令没有输出值。
因此,到目前为止,xev | grep -A2 --line-buffered -E 'ButtonRelease' | grep -o 'button 1'
当我单击 xev 窗口时,它基本上会输出“按钮 1”。我想每 5 秒运行一次单独的命令 ( xdotool mousemove 1401 1139 click 1
),直到我单击 xev 窗口,此时脚本停止。
如果您的命令立即返回,那么只需采取您的命令并将输出写入变量。
然后测试输出是否为空
您可以将其放入 while 循环中:
如果您的命令是一个阻塞过程,并且您想要根据其输出执行某些操作,那么您需要分叉并监视该输出。
这里有一个解决方案,将重复
xdotool
命令放入后台,然后监视xev
相关触发器。一旦找到,它就会终止后台进程并干净地退出。stdbuf -oL
愚蠢的人会xev
逐行输出信息消息,而不是像管道那样进行缓冲。