#bash #keystroke
Вопрос:
У меня есть этот фрагмент кода bash ниже,
#!/bin/bash while true; do read -rsn1 input if [ "$input" = "a" ]; then echo "triggered" fi done
Это прекрасно работает, когда я нажимаю клавишу «a», однако на самом деле я хочу, чтобы что-то сработало, когда пользователь нажимает клавишу TAB. Как я могу заставить это работать? Большое спасибо за помощь!
Ответ №1:
Если вы не хотите , чтобы сканирование было разделено IFS
, установите IFS
значение пусто.
IFS= read -rsn1 input
Комментарии:
1. Извините, я не понимаю. Я хочу, чтобы скрипт проверил, нажал ли пользователь клавишу TAB, если да, то я инициирую какое-то действие. Я знаю, нажимают ли они «a» или «b», но я не знаю, как захватить вкладку.
2. @JeffWen по умолчанию
IFS
read
будет удалять пробелы и новые строки, поэтому вам нужно установить его пустым. затем вы можете проверитьif [[ $input == $'t' ]] ...
3.
IFS= read -rsn1 input
Захватывает вкладку в переменнойinput
.4. Большое всем спасибо, теперь все понятно, ура!