2010-11-16 19 views
7

Bash okurken, backsp tuşuna basıldığında girilen son karakter silinmez, ancak giriş arabelleğine bir backspace eklenir. Bunu değiştirebilmem için herhangi bir yolu var mı? Öyleyse nasıl?Bash backspace düğmesi davranış sorunu

#!/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 
+0

'if! read ... ' –

cevap

11
seçenek -n nchars böylece en iyi şansın readline temel almaktır, çiğ moduna terminali döner

(-e:

Burada herhangi bir yardım varsa onu kullanıyorum kısa bir örnek prog var) [docs]:

$ read -n10 -e VAR 

BTW, güzel bir fikir, ben (o dönüşü basın bir diz refleksi tepki) kullanıcıya kelimenin sonuna bırakacaktı rağmen.

+1

Manpage'deki tüm anahtarların dışında, o_O'yu denemediğim tek şey. Her neyse, bu nasıl çalıştığımı çalıştı, bir tuhaflık ile: bir karakter girildiğinde silme tuşuna basarsam önceki satır silinir. Eklemek için ek -p ekliyor "" komutu düzeltmek için görünüyordu. Şerefe. –

+0

sadece -e bayrağı kullan – danday74