Как подавить эхо функции проверки ошибок

Я пытаюсь захватить нажатие клавиши в сценарии оболочки (например, используя read ), а не повторять его. Три метода, которые я нашел, были stty -echo , -s switch и stream redirection.

Однако на macOS, который, как представляется, использует реализацию FreeBSD, ни одна из них не работает последовательно.

Следующий сценарий показывает проблему:

 while true; do stty -echo read -s -n 1 CHAR &>/dev/null stty echo done 

При одновременном нажатии стрелок вверх и вниз, иногда команда эхосигнала A^[[B или B^[[A Это происходит особенно часто, когда машина работает медленно (из-за разряда батареи), что указывает на состояние гонки.

Я что-то упускаю? В противном случае, как я могу обойти эту проблему?

One Solution collect form web for “Как подавить эхо функции проверки ошибок”

В вашем цикле есть короткое окно времени между «stty echo» в конце цикла и «stty -echo» на следующей итерации. Вход клавиатуры, полученный во время этого окна, будет эхом, даже если команда чтения не ждет его. Если вы не хотите эхо, не называйте «stty echo» 😉

  • используйте команду «читать» для передачи строк в качестве позиционных параметров в сценарий оболочки
  • Чтение значений массива в качестве пользовательского ввода дает неправильную длину массива и только -a или -p работает при чтении
  • Понимание встроенного чтения
  • Пауза (с чтением или аналогичным) в xargs
  • Используя sed с herestring (<<<) и прочитайте -a
  • Ждите ключа в сценарии оболочки, который может быть отправлен в / bin / bash
  • Как обрабатывать обратные стрелки, клавиши «Конец» и «Домой» в приглашении на чтение
  • Как читать команды из файла?
  • Запустите сценарий оболочки и прочитайте вывод в переменной и запустите другой скрипт на основе вывода
  • Как читать с другого терминала?
  • Почему этот скрипт зацикливается на первой строке файла txt?
  • Interesting Posts

    Что делает «sudo su -s / bin / bash – <username>»?

    Как заставить netcat использовать существующий HTTP-прокси

    Трубчатые фрагменты документа с помощью различных команд

    Как создать сетевой интерфейс USB для передачи Интернета на телефон Android?

    Возможно ли «защитить» символ IFS от разделения поля?

    Как распаковать каталог внутри zip-файла

    Установить путь для всех пользователей (оболочки для входа и без входа)

    Символ функции получает суффикс «.part» после компиляции

    Ошибка Kerberos после установки ArchLinux

    Как я могу перенаправить ввод и вывод команды через VNC?

    Firefox в Linux не интерпретирует 12px Arial правильно, но 1 или 0,9

    Почему я не могу запускать программы, извлеченные из архива?

    Как можно настроить псевдонимы bash для обработки пробелов в именах каталогов?

    Как написать сценарий запуска pre-mount?

    Как построить 32-битное приложение в 64-разрядной системе с помощью диспетчера пакетов Nix?

    Linux и Unix - лучшая ОС в мире.