При использовании чтения в bash нажатие на обратное пространство не удаляет последний введенный символ, но, как представляется, добавляет обратное пространство во входной буфер. Есть ли способ изменить его, чтобы удалить удаляет последний введенный из ввода ключ? Если да, то как?Проблема с поведением кнопки Backspace для чтения Bash
Вот краткий пример прог я использую его, если это какой-либо помощи:
#!/bin/bash
colour(){ #$1=text to colourise $2=colour id
printf "%s%s%s" $(tput setaf $2) "$1" $(tput sgr0)
}
game_over() { #$1=message $2=score
printf "\n%s\n%s\n" "$(colour "Game Over!" 1)" "$1"
printf "Your score: %s\n" "$(colour $2 3)"
exit 0
}
score=0
clear
while true; do
word=$(shuf -n1 /usr/share/dict/words) #random word from dictionary
word=${word,,} #to lower case
len=${#word}
let "timeout=(3+$len)/2"
printf "%s (time %s): " "$(colour $word 2)" "$(colour $timeout 3)"
read -t $timeout -n $len input #read input here
if [ $? -ne 0 ]; then
game_over "You did not answer in time" $score
elif [ "$input" != "$word" ]; then
game_over "You did not type the word correctly" $score;
fi
printf "\n"
let "score+=$timeout"
done
'if! read ... ' –