创建文本菜单创建菜单布局
root@wl-MS-7673:/home/wl/桌面/shell# cat -n test1.sh
1 #!/bin/bash
2 echo -e "\t\tMenu"
3 echo -e "1.\tDisplay disk space"
4 echo -e "2.\tDisplay logged on user"
5 echo -e "3.\tDisplay memory usage"
6 echo -e "0.\tExit menu\n\n"
7 echo -en "\t\tEnter option:" #-n表示不打印回车
8 read -n1 option #读取一个字符
9 echo ""
root@wl-MS-7673:/home/wl/桌面/shell# ./test1.sh
Menu
1. Display disk space
2. Display logged on user
3. Display memory usage
0. Exit menu
Enter option:1
root@wl-MS-7673:/home/wl/桌面/shell#
创建菜单函数
只需把上面的代码用函数包起来即可
添加菜单逻辑添加对应的case即可
root@wl-MS-7673:/home/wl/桌面/shell# cat -n test2.sh
1 #!/bin/bash
2 option=""
3 create_menu(){
4 echo -e "\t\tMenu"
5 echo -e "1.\tDisplay disk space"
6 echo -e "2.\tDisplay logged on user"
7 echo -e "3.\tDisplay memory usage"
8 echo -e "0.\tExit menu\n\n"
9 echo -en "\t\tEnter option:"
10 read -n1 option
11 echo ""
12 }
13
14 create_menu
15
16 case $option in
17 0)
18 echo "Display disk space";;
19 1)
20 echo "Display logged on user";;
21 2)
22 echo "Display memory usage";;
23 3)
24 echo "Exit menu";;
25 *)
26 echo "error";;
27 esac
28
root@wl-MS-7673:/home/wl/桌面/shell# ./test2.sh
Menu
1. Display disk space
2. Display logged on user
3. Display memory usage
0. Exit menu
Enter option:3
Exit menu
root@wl-MS-7673:/home/wl/桌面/shell# apt-get install sed
root@wl-MS-7673:/home/wl/桌面/shell# cat test3.sh
#/bin/bash
ption=""
create_menu(){
echo -e "\t\tMenu"
echo -e "1.\tDisplay disk space"
echo -e "2.\tDisplay logged on user"
echo -e "3.\tDisplay memory usage"
echo -e "0.\tExit menu\n\n"
echo -en "\t\tEnter option:"
read -n1 option
echo ""
}
create_menu
disk_space(){
df -k
}
whoseon(){
who
}
menu_usage(){
cat /proc/meminfo
}
deal_menu(){
case $option in
1)
disk_space;;
2)
whoseon;;
3)
menu_usage;;
0)
echo "Exit menu";;
*) #输入错误,重新输入
echo -e "\nSorry, wrong selection."
echo -en "\n\n\t\tHit any key to continue."
read -n1 option #重新读取菜单选项
deal_menu;;
esac
}
deal_menu
root@wl-MS-7673:/home/wl/桌面/shell#
运行结果如图:
root@wl-MS-7673:/home/wl/桌面/shell# ./test3.sh
Menu
1. Display disk space
2. Display logged on user
3. Display memory usage
0. Exit menu
Enter option:
root@wl-MS-7673:/home/wl/桌面/shell# ./test3.sh
Menu
1. Display disk space
2. Display logged on user
3. Display memory usage
0. Exit menu
Enter option:1
文件系统 1K-块 已用 可用 已用% 挂载点
/dev/sda11 68151872 7654680 57035204 12% /
udev 2039652 4 2039648 1% /dev
tmpfs 818784 908 817876 1% /run
none 5120 0 5120 0% /run/lock
none 2046956 264 2046692 1% /run/shm
root@wl-MS-7673:/home/wl/桌面/shell#
使用select命令
root@wl-MS-7673:/home/wl/桌面/shell# cat -n test4.sh 1 #!/bin/bash 2 3 4 disk_space(){ 5 6 df -k 7 } 8 9 whoseon(){ 10 11 who 12 } 13 14 menu_usage(){ 15 16 cat /proc/meminfo 17 } 18 19 20 21 PS3="Enter option:" 22 select option in "Display disk space" "Display logged on user" "Display memory usage" "Exit menu" 23 do 24 case $option in 25 "Display disk space") 26 disk_space;; 27 "Display logged on user") 28 whoseon;; 29 "Display memory usage") 30 menu_usage;; 31 "Exit menu") 32 echo "Exit menu" 33 break;; 34 *) 35 echo -e "\nSorry, wrong selection." 36 echo -en "\n\n\t\tHit any key to continue." 37 read -n1 option 38 deal_menu;; 39 esac 40 done root@wl-MS-7673:/home/wl/桌面/shell#
运行结果如图所示:
root@wl-MS-7673:/home/wl/桌面/shell# ./test4.sh 1) Display disk space 3) Display memory usage 2) Display logged on user 4) Exit menu Enter option:1 文件系统 1K-块 已用 可用 已用% 挂载点 /dev/sda11 68151872 7654632 57035252 12% / udev 2039652 4 2039648 1% /dev tmpfs 818784 908 817876 1% /run none 5120 0 5120 0% /run/lock none 2046956 264 2046692 1% /run/shm Enter option:2 wl pts/0 2013-11-25 15:44 (:0.0) wl pts/1 2013-11-25 17:31 (:0.0) Enter option:3 MemTotal: 4093912 kB MemFree: 2341120 kB Buffers: 187220 kB Cached: 702080 kB SwapCached: 0 kB Active: 917904 kB Inactive: 521664 kB Active(anon): 551016 kB Inactive(anon): 2088 kB Active(file): 366888 kB Inactive(file): 519576 kB Unevictable: 16 kB Mlocked: 16 kB HighTotal: 3253080 kB HighFree: 1780332 kB LowTotal: 840832 kB LowFree: 560788 kB SwapTotal: 4165628 kB SwapFree: 4165628 kB Dirty: 92 kB Writeback: 0 kB AnonPages: 550372 kB Mapped: 218440 kB Shmem: 2840 kB Slab: 66112 kB SReclaimable: 47724 kB SUnreclaim: 18388 kB KernelStack: 3488 kB PageTables: 8988 kB NFS_Unstable: 0 kB Bounce: 0 kB WritebackTmp: 0 kB CommitLimit: 6212584 kB Committed_AS: 2815796 kB VmallocTotal: 122880 kB VmallocUsed: 30336 kB VmallocChunk: 92168 kB HardwareCorrupted: 0 kB AnonHugePages: 0 kB HugePages_Total: 0 HugePages_Free: 0 HugePages_Rsvd: 0 HugePages_Surp: 0 Hugepagesize: 2048 kB DirectMap4k: 8184 kB DirectMap2M: 905216 kB Enter option:4 Exit menu root@wl-MS-7673:/home/wl/桌面/shell#
在脚本中使用dialog命令
root@wl-MS-7673:/home/wl/桌面/shell# cat -n test5.sh 1 #!/bin/bash 2 temp=`mktemp -t temp.XXXXXX` 3 temp2=`mktemp -t temp2.XXXXXX` 4 disk_space(){ 5 df -k > $temp 6 dialog --textbox $temp 20 60 7 } 8 9 whoseon(){ 10 who > $temp 11 dialog --textbox $temp 20 50 12 } 13 14 menu_usage(){ 15 cat /proc/meminfo > $temp 16 dialog --textbox $temp 20 50 17 } 18 19 dialog --menu "menu" 20 30 10 1 "Display disk space" 2 "Display logged on user" 3 "Display memory usage" 0 "Exit menu" 2>$temp2 20 if [ $? -ne 1 ] 21 then 22 selection=`cat $temp2` 23 case $selection in 24 1) 25 disk_space;; 26 2) 27 whoseon;; 28 3) 29 menu_usage;; 30 0) ;; 31 *) 32 dialog --msgbox "Sorry, invalid selection" 10 30 33 esac 34 fi 35 36 rm -f $temp $temp2 2>/dev/null root@wl-MS-7673:/home/wl/桌面/shell#
运行结果与上述类似。
zenity --calendar
root@wl-MS-7673:/home/wl/桌面/shell# cat -n test6.sh 1 #!/bin/bash 2 temp=`mktemp -t temp.XXXXXX` 3 temp2=`mktemp -t temp2.XXXXXX` 4 disk_space(){ 5 df -k > $temp 6 zenity --text-info --title "Disk space" --filename=$temp --width 750 --height 300 7 } 8 9 whoseon(){ 10 who > $temp 11 zenity --text-info --title "Logged on user" --filename=$temp --width 500 --height 200 12 } 13 14 menu_usage(){ 15 cat /proc/meminfo > $temp 16 zenity --text-info --title "Memory usage" --filename=$temp --width 300 --height 500 17 } 18 19 zenity --list --radiolist --title "Menu" --column "Select" \ 20 --column "Menu Item" FALSE "Display disk space" FALSE "Display logged on user" FALSE "Display memory usage" FALSE "Exit" > $temp2 21 if [ $? -ne 1 ] 22 then 23 selection=`cat $temp2` 24 case $selection in 25 "Display disk space") 26 disk_space;; 27 "Display logged on user") 28 whoseon;; 29 "Display memory usage") 30 menu_usage;; 31 "Exit") ;; 32 *) 33 zenity --info "Sorry. invalid selection." 34 esac 35 fi 36 37 rm -f $temp $temp2 2>/dev/null root@wl-MS-7673:/home/wl/桌面/shell#