如何将正在执行的命令中的一串数字保存到 shell 脚本中的列表中?

如何将正在执行的命令中的一串数字保存到 shell 脚本中的列表中?

我正在尝试制作一个 shell 脚本,通过记录每次按钮按下的单独键码来记录宏。

它的命令如下:

xev | grep -A2 --line-buffered '^Key*' | sed -n '/keycoe /s/^.*keycode \([0-9]*\).* (.*, \(.*\)).*$/\1 /p'

您可以在终端中运行它来查看它是如何工作的。

基本上,它所做的就是输出大量数字代码(键码),每个代码之间都有行距,如下所示:

51
51
42
42
53
30
30
53

等等等等。我需要分别捕获每一个代码,并将它们放入如下所示的列表/字符串中:

xdotool keydown 51 && xdotool keyup 51 && xdotool keydown 42 && xdotool keyup 42

并继续下去。(每次弹出一个数字时,它都被指定为 keydown,每次第二次弹出时,它都被读取为 keyup 以避免循环)

我怎样才能在 shell 脚本中实现这一点?我怎样才能让 shell 脚本在出现每个单独的键码时将其保存到变量中?

脚本本身很简单,但我不知道如何获取单独的代码,因为唯一分隔代码的就是换行符。

答案1

| while read kk; do echo "xdotool keydown $kk && xdotool keyup $kk &&"; done; echo true

注意前面的管道;它位于 OP 用于生成所述 xev 输出的任何内容的末尾

相关内容