Bash 脚本在延迟后才执行命令

Bash 脚本在延迟后才执行命令

我创建了一个脚本,通过将其绑定到热键来键入随机数字字符串:

#!/bin/bash

ran="$(shuf -i 100000-999999 -n 1)"

sleep .2

xdotool type --delay 12 "untitled_$ran "

由于某种原因,该xdotool命令在前十分之一秒左右不会执行任何操作。如果没有sleep,则不输入任何内容。如果sleep命令较短,则键入的字符少于六个。就好像命令正在运行,但在脚本执行后的最初几分钟内被忽略。

为什么会出现这种情况,我该如何解决这个问题?

答案1

您在评论中说过您正在使用某种热键来触发此脚本。我无法确定发生了什么,但我怀疑键盘焦点正在移动,并且xdotool当无延迟运行时,正在运行,而焦点不是预期的终端。我推荐使用以下方法来检验这个假设:

  • xev从终端开始。
  • 聚焦xev窗口(将鼠标移入窗口等),同时保持终端可见。
  • 按你的热键。
  • 监视FocusOutFocusIn记录事件xev。如果发生其中任何一种情况,他们可以解释为什么xev缺少按键。
  • KeyPress事件KeyRelease应该表明你xdotool正在做它的工作。

如果假设是正确的,那么至于如何解决它,您必须以某种不会导致焦点变化的方式激活热键。我不知道...

相关内容