日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

在Unix系統(tǒng)下用shell制作通用界面( 三 )


if [ -s $prg_name ]
then
eval $prg_name
# 執(zhí)行所調(diào)用的子程序
else
echo “07”
fi
}
下面是主程序:
# 設(shè)置菜單界面前景與背景顏色
COLOR1=“33[32;44;1m” # 菜單界面的前景色
COLOR2=“33[33;45;1m” # 菜單界面的背景色
COLOR3=“33[37;40;1m” # 選擇光標(biāo)的顏色
# 對程序中所用的一些變量進(jìn)行初始化設(shè)置
CUR_R=1 #選擇光標(biāo)在菜單界面的行位置
CUR_C=1 #選擇光標(biāo)在菜單界面的列位置
S_LENGTH=‘head -1 menu|sed -e ‘s/|//g" |awk ‘{ print length($0)}""
# 確定菜單界面的寬度
S_MENU=‘head -1 menu|awk -F“|” ‘{ print NF}""
# 確定菜單標(biāo)題欄的字段數(shù)
C_COL=‘expr ( 80 - $S_LENGTH - 4 ) / 2 " # 確定菜單界面的起始位置
echo ${COLOR1}; clear # 按格式顯示菜單界面
row=2 # 顯示行 [2-23]
while [ row -le 23 ]
do
case $row in
2) echo “33[${row};${C_COL}H┏c”; menu_x “━”; echo “┓”
3) echo “33[${row};${C_COL}H┃c”;
head -1 menu |sed -e ‘s/|//g" |awk ‘{ print $0 “┃” }"
23) echo “33[${row};${C_COL}H┗c”; menu_x “━”; echo “┛c”
*) echo “33[${row};${C_COL}H┃c”; menu_x “ ”; echo “┃”
esac
row=‘expr $row1"
done
while true
do
menu_c $CUR_C $CUR_R # 計算選擇光標(biāo)的位置
echo “${COLOR2}${SCREEN_CUR_X}c”
stty -echo
getchar # 等待選擇
ANS_X=$? # 返回ASCII值
stty echo
echo “${COLOR1}${SCREEN_CUR_X}c”
case $ANS_X in
3|4) menu_x_y $ANS_X $CUR_C $S_MENU
#選擇光標(biāo)在菜單標(biāo)題欄中左右移動
CUR_C=$?
1|10) if [ $CUR_C = $S_MENU ] #按回車鍵或↓鍵進(jìn)入子菜單
then setcolor -n ; clear; break
fi
menu_row_number $CUR_C
# 在菜單標(biāo)題欄下將所包含子菜單內(nèi)容顯示在屏幕上
row=2
while [ row -le ${S_NUMBER} ]
do
menu_c $CUR_C $row
echo “${COLOR3}${SCREEN_CUR_X}c”
row=‘expr $row1 "
done
while true do
menu_c $CUR_C $CUR_R
echo “${COLOR2}${SCREEN_CUR_X}c”
stty -echo
getchar
ANS_Y=$?
stty echo
echo “${COLOR3}${SCREEN_CUR_X}c”
case $ANS_Y in
1|2) menu_x_y $ANS_Y $CUR_R $S_NUMBER #上下移動選擇光標(biāo)
CUR_R=$?
3|4) menu_x_y $ANS_Y $CUR_C $S_MENU #左右移動選擇光標(biāo)退出子菜單選擇
CUR_C=$?
CUR_R=1
break
10) menu_prg $CUR_C $CUR_R#回車后執(zhí)行子程序
*) echo “07”
esac
done

*) echo “07c”
esac
done
小結(jié)
本文所論述的是如何在Unix系統(tǒng)下利用shell制作通用的下拉菜單 。這種通用性集中體現(xiàn)在實現(xiàn)了菜單下的菜單名稱以及所調(diào)用的子程序名稱與菜單主程序的分離,菜單界面下子菜單名稱以及所調(diào)用的子程序名稱分別存放在兩個文本文件中,主程序通過對這兩個文件的讀取實現(xiàn)了菜單程序的正確顯示與選擇功能 。只要對這兩個文本文件進(jìn)行編輯,不需要對主程序進(jìn)行任何改動,即可完成Unix系統(tǒng)下拉菜單的制作,使得菜單制作非??旖?、靈活 。同時可以很方便地進(jìn)行移植,因而有較強(qiáng)的通用性 。而且采用這種方式制作出來的下拉菜單界面比較直觀、明了,操作起來更加簡單、方便 。
備注:在編輯menu和prg文件時,子菜單名稱和子程序名稱是一一對應(yīng)的關(guān)系,所以子菜單與子程序在文件中位置要擺放正確,不能亂放 。由于在本程序中awk語句的所有分隔符都是“|”,而不是空格,因而文本文件中的分隔符也是“|”,而不能用空格,這一點在編輯這兩個文件時要特別注意 。

推薦閱讀