现在,我们很容易用dd从终端读入一个字符,但如何判断一些特殊情形呢?在键盘上按下你需要判断的键,如上箭头,回车后,系统提示:^[[A: not found
^[[A便是我们判断的依据,脚本示例如下:
#!/bin/ksh
get_char()
{
SAVEDSTTY=`stty -g`
stty -echo
stty raw
dd if=/dev/tty bs=1 count=1 2> /dev/null
stty -raw
stty echo
stty $SAVEDSTTY
}
c=`get_char`
case "$c" in
'^M' ) echo "enter" ;;
'^[' ) echo "possible arrow keys"
secondchar=`get_char`
thirdchar=`get_char`
case "$thirdchar" in
'A' ) echo UP ;;
'B' ) echo DOWN ;;
'D' ) echo LEFT ;;
'C' ) echo RIGHT ;;
esac
esac
大家也可以直接改造get_char,使之能够直接返回ESC序列.
自己给自己回复以下.
偶不习惯看到没有回复的帖子.hihi
大家也可以直接改造get_char,使之能够直接返回ESC序列.
请问如何改造呢。。。。。?
斑竹,你是如何学好的?给我发两本电子文档书(你认为经典的,对我肯定有帮助的)。
To goodboy:到我的FTP上看一下.上边有基本shell编程的书.
不知你信不信,我本人并没看过那些书.不过也许因此走了不少弯路.现在懂的那一点点,有的来自系统管理方面的书,来自man的,来自bbs的,说不清楚.时间久了,积累罢了.
怎样改成在sh下也能运行?
(出处:http://www.sheup.com)