Проблема с поведением кнопки возврата при чтении в Bash

При использовании чтения в bash нажатие клавиши Backspace не удаляет последний введенный символ, а, кажется, добавляет обратное пространство во входной буфер. Есть ли способ изменить его так, чтобы при удалении удалялась последняя введенная клавиша из ввода? Если да, то как?

Вот небольшой пример программы, с которой я использую ее, если она может помочь:

#!/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
7
задан Jonathan Leffler 16 November 2010 в 17:22
поделиться