Выполнять функцию в bash при каждом нажатии клавиши в интерактивной оболочке

python3

python3 -c '
from itertools import groupby
s = ("".join(g) for k, g in 
    groupby("string123anotherstr456thenanotherstr789", lambda x: x.isalpha()))
print(*s, sep="\n")
'

string
123
anotherstr
456
thenanotherstr
789
0
17.12.2020, 04:22
1 ответ

Возможно, я вас неправильно понял, но read -n1может сработать.

#!/bin/bash
while read -n1 -r v
do
        printf 'You typed "%s".\n' "$v"
done
  • -rпозволяет использовать обратную косую черту(\)как обычный символ.
  • Его нужно настроить, чтобы вы действительно могли видеть когда пользователь вводит пробел, табуляцию или Enter . (Как написано здесь, readвернется, но $vне будет установлен.)
  • Специальные клавиши (, такие как F1 ), будут отображаться как несколько символов.
  • Символы отображаются по мере их ввода пользователем, как обычно. Вы можете отключить это с помощью stty -echo.
  • Как написано здесь, код вам нужно использовать Ctrl + C , чтобы выйти из цикла. Очевидно, вы можете добавить свою собственную логику; например, if [ "$v" = Q ]; then break; fi.
0
18.03.2021, 22:42

Теги

Похожие вопросы