我有点困惑,当我在 shell 上运行这个 showkey -a 命令时,该命令已运行,我可以与它实时交互。
见下文
timeout 10 /usr/bin/showkey -a
Press any keys - Ctrl-D will terminate this program
t 116 0164 0x74
a 97 0141 0x61
s 115 0163 0x73
d 100 0144 0x64
f 102 0146 0x66
g 103 0147 0x67
j 106 0152 0x6a
f 102 0146 0x66
k 107 0153 0x6b
l 108 0154 0x6c
d 100 0144 0x64
现在,当我在 shell 脚本中添加此命令时,我看不到任何输出,或者换句话说,我无法与脚本或脚本内运行的命令进行交互。
这是我的 bash 脚本。
#!/bin/bash
timeout 10 /usr/bin/showkey -a
exit 0
当我运行此脚本时,它会等待 10 秒并退出 shell。我怎样才能让它显示按下的按键、代码并与用户交互。
我想要这个的原因是因为脚本必须在进行键盘测试之前执行许多任务,并且在键盘测试之后脚本还需要执行各种其他任务。我在任何地方都找不到任何答案,所以作为最后的手段,我不得不在这里问这个问题。我希望有人能帮帮忙。
答案1
该命令showkey
从控制台设备读取。如果从子 shell 启动showkey
,则必须重定向 stdin:
#!/usr/bin/env bash
/usr/bin/showkey -a </dev/stdin
如果您想使用timeout
,只需允许该命令showkey
从 TTY 读取并获取 TTY 信号:
#!/usr/bin/env bash
timeout --foreground 10 /usr/bin/showkey -a </dev/stdin