按键通常不是由单个字符构成:如方向键上(^[[A)、下(^[[B)、左(^[[C)、右(^[[D),退出键ESC(^[);方向键的前两个字符的表示方式和ESC的表示方法是一样的。
shell脚本如下:
#!/bin/bash #Program: # this is a program for test key #History: # Walker version:first GetKey() { aKey=(0 0 0) cESC=`echo -ne " 33"` #注意,这不是单引号,是ESC下面那个,里面的指令会先执行,并将结果赋值 while :#':'表示永远为真 do read -s -n 1 key #读取按键,每次只能读取一个ASCII字符 echo $key # echo XXX aKey[0]=${aKey[1]} aKey[1]=${aKey[2]} aKey[2]=$key if [[ ${aKey[0]} == $cESC && ${aKey[1]} == "[" ]] then if [[ $key == "A" ]];then echo KEYUP#方向键判断 elif [[ $key == "B" ]];then echo KEYDOWN elif [[ $key == "D" ]];then echo KEYLEFT elif [[ $key == "C" ]];then echo KEYRIGHT fi fi done } GetKey