偶编的简单的菜单:感觉还可以,就是运行太慢,可能不实用,但费了偶不少脑筋
,不忍弃之..
######################################
#
# program: MENU_CD
#
######################################
# 屏幕任意位置函数
xy()
{
#_R=row,_C=column
_R=$1
_C=$2
tput cup $_R $_C
}
########## 格式化dd_code.txt文件内容并生成屏幕菜单
clear
xy 1 2
echo '[36m┌────────────────────────────────┐[37m' #注[36m)( 色彩控制符在unix下应该是这样的^[[36m
xy 1 26
echo '[41m[37m业务处理主菜单[40m'
xy 2 2
echo ' '
r_1=2 # 画框行变量
r_row=1 # 记录行变量
c_col=5 # 记录列变量
count=0 # 循环记数器,dd_code.txt文本行变量
wc -l dd_code.txt >menu.tmp
sum=`awk '{print $1}' menu.tmp` ## 循环终止值
while [ $count -lt $sum ]
do
xy $r_1 2
echo '[36m│[37m'
xy $r_1 68
echo '[36m│[37m'
#xy $r_row $c_col
#sed -n ""$count"p" dd_code.txt
################################### 计算列位置
bc <<! >hh.tmp
$count%2
quit
!
###################################
int=`sed -n "1p" hh.tmp`
if [ "$int" = "0" ]; then
c_col=5
r_row=`expr $r_row + 1`
count=`expr $count + 1`
r_1=`expr $r_1 + 1`
xy $r_row $c_col
sed -n ""$count"p" dd_code.txt
else
c_col=5
#r_row=`expr $r_row + 1`
c_col=`expr $c_col + 30`
count=`expr $count + 1`
#r_1=`expr $r_1 + 1`
xy $r_row $c_col
sed -n ""$count"p" dd_code.txt
fi
done
echo " [36m└────────────────────────────────┘[37m"
echo " 请输你的选择[回车则退出]:[32m\c"
read choose_dh
echo "[37m"
if [ "$choose_dh" = "" ]; then
rm *.tmp # 删除临时文件
exit 1
fi
..........以后是你就可以是你要调用子程序或子菜单或命令的语句了...
####################################
这是菜单内容文本: dd_code.txt
1 -----菜单名
2 -----菜单名
3 -----菜单名
4 -----菜单名
.......
n -----菜单名
将菜单名改成你所定义的名称,然后运行menu_dd即可.
请大家斧正.