現在,我們很容易用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下也能運行?