|
最近闲着没事,写了个脚本,运行后会在屏幕中间echo一个"#"号,然后按 上下左右 键可以移动它, 不过我想让它闪烁, 想了很久没有想出来,希望高手指点一下.谢谢
- #!/bin/bash
- MaxLine=`tput lines`
- MaxCol=`tput cols`
- line=$(( MaxLine/2 ))
- col=$(( MaxCol/2 ))
- tput civis #hide mouse
- tput sc #save mouse point
- tput cup $line $col
- echo -ne "\033[40;31m#"
- MyExit()
- {
- tput cup 0 0
- echo "Esc "
- tput rc #
- tput cnorm #set mouse to saved point
- exit
- }
- MyMove()
- {
- tput cup 0 0
- echo "$1 "
- tput cup $line $col
- echo ' '
- case $1 in
- up) ((line--))
- [ $line -lt 0 ] && line=$[MaxLine-2]
- ;;
- down) ((line++))
- [ $line -gt $[MaxLine-2] ] && line=0
- ;;
- left) ((col--))
- [ $col -lt 0 ] && col=$[MaxCol-1]
- ;;
- right) ((col++))
- [ $col -ge $MaxCol ] && col=0
- ;;
- esac
- tput cup $line $col
- echo '#'
- }
- ESC=$(echo -ne "\33")
- TMP=(0 0 0)
- while
- read -sn 1 Key
- do
- TMP[0]=${TMP[1]}
- TMP[1]=${TMP[2]}
- TMP[2]=$Key
- if [ "$Key" ]; then
- [ "$Key" == "$ESC" -a "${TMP[1]}" == "$ESC" ] && MyExit
- fi
- if [[ ${TMP[0]} == $ESC && ${TMP[1]} == "[" ]]; then
- case $Key in
- A) #echo Up
- MyMove up
- ;;
- B) #echo Down
- MyMove down
- ;;
- C) #echo Right
- MyMove right
- ;;
- D) #echo Left
- MyMove left
- ;;
- esac
- fi
- done
复制代码 |
|