我在这方面取得了部分成功,但我被卡住了。这是我的脚本:
我想提示用户,等待来自 USB 游戏手柄的输入,然后根据按下的按钮执行命令。
if lsusb | grep -q '0583:2060'
then
echo "press the A button"
#
if jstest --event /dev/input/js0 | grep -q "number 0, value 1"
then
echo "you pressed the A button"
else
echo "you pressed the NOT A button"
fi
fi
Run Code Online (Sandbox Code Playgroud)
它检查游戏手柄是否连接正常。当我按下 A 按钮时,它还会检查 jstest 并回显“您按下了 A 按钮”。
但是,在这种情况下,我无法让它执行“其他”部分,因为 grep 仅从 jstest(A 按钮)过滤“按钮 0,值 1”,这意味着如果我不按下 A 按钮,jstest 正在管道没什么可 grep 的,它总是等待 A 按钮。
我在想也许有一些方法可以做到:
grep -q "number ., value 1"
Run Code Online (Sandbox Code Playgroud)
这将返回任何被按下的按钮,然后根据 grep 显示的内容执行不同的命令。我以为我可以为此使用 case 语句,但是我无法让 jstest 使用 …
shell-script ×1