Bash读取退格按钮行为问题

前端之家收集整理的这篇文章主要介绍了Bash读取退格按钮行为问题前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在bash中使用read时,按退格键不会删除输入的最后一个字符,但似乎会在输入缓冲区中附加一个退格键.有什么方法可以更改它,以便删除从输入中键入的最后一个键?如果是这样的话?

这是一个简短的示例编程我正在使用它,如果有任何帮助:

#!/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
选项-n nchars将终端转为原始模式,因此您最好的机会是依赖readline(-e) [docs]
$read -n10 -e VAR

顺便说一句,好主意,虽然我会把这个词的结尾留给用户(这是对按回车的一个下意识的反应).

猜你在找的Bash相关文章