一、创建文本菜单
shell脚本菜单的核心是case命令,case命令根据用户在菜单中选择的字母执行特定的命令。
(1)创建菜单布局
[root@ceph01 menu]# cat menu.sh
clear
echo
echo -e "\t\t\tSys Admin Menu\n"
echo -e "\t1. Display disk space"
echo -e "\t2. Display logged on users"
echo -e "\t3. Display memory usage"
echo -e "\t0. Exit menu\n\n"
echo -en "\t\tEnter option: "
运行脚本:
(2)创建菜单函数
function menu {
clear
echo
echo -e "\t\t\tSys Admin Menu\n"
echo -e "\t1. Display disk space"
echo -e "\t2. Display logged on users"
echo -e "\t3. Display memory usage"
echo -e "\t0. Exit menu\n\n"
echo -en "\t\tEnter option: "
read -n 1 option
}
(3)添加菜单逻辑
menu
case $option in
0)
break ;;
1)
diskspace ;;
2)
whoseon ;;
*)
clear
echo "Sorry, wrong selection";;
esac
(4)组合
[root@ceph01 menu]# cat menu.sh
#!/bin/bash
# simple script menu
function diskspace {
clear
df -h
}
function whoseon {
clear
who
}
function memusage {
clear
cat /proc/meminfo
}
function menu {
clear
echo
echo -e "\t\t\tSys Admin Menu\n"
echo -e "\t1. Display disk space"
echo -e "\t2. Display logged on users"
echo -e "\t3. Display memory usage"
echo -e "\t0. Exit menu\n\n"
echo -en "\t\tEnter option: "
read -n 1 option
}
while [ 1 ]
do
menu
case $option in
0)
break ;;
1)
diskspace ;;
2)
whoseon ;;
3)
memusage ;;
*)
clear
echo "Sorry, wrong selection";;
esac
echo -en "\n\n\t\t\tHit any key to continue"
read -n 1 line
done
clear
(5)使用select命令
select命令允许从单命令行创建菜单,然后获取输入的答案并自动处理它。select命令的格式是:
select variable in list
do
commands
done
[root@ceph01 menu]# cat menu-select.sh
#!/bin/bash
# using select in the menu
function diskspace {
clear
df -k
}
function whoseon {
clear
who
}
function memusage {
clear
cat /proc/meminfo
}
PS3="Enter option: "
select option in "Display disk space" "Display logged on users" "Display memory usage" "Exit program"
do
case $option in
"Exit program")
break ;;
"Display disk space")
diskspace ;;
"Display logged on users")
whoseon ;;
"Display memory usage")
memusage ;;
*)
clear
echo "Sorry, wrong selection";;
esac
done
clear
[root@ceph01 menu]# ./menu-select.sh
1) Display disk space 3) Display memory usage
2) Display logged on users 4) Exit program
Enter option:
二、添加颜色
(1)ANSI转义码
ANSI转义码以控制序列指示器开头,后面跟表示要在显示器上执行的操作的数据。
SGE转义码的格式为:
CSIn[;k]m
-m代表SGR转义码
n和k参数定义所使用的显示控制
显示控制参数有3类:
效果控制代码
前景色控制代码
背景色控制代码
将显示设置为使用倾斜的字体:
CSI3m
将显示设置为使用倾斜和闪亮:
CSI3;5m
指定白色前景:
CSI37m
(2)显示ANSI转义码
Ctrl + v ; Esc键
使用ANSI转义控制码进行测试:
[root@ceph01 menu]# echo ^[[41mThis is a test
This is a test
[root@ceph01 menu]#
[root@ceph01 menu]# echo ^[[41mThis is a test^[[0m
This is a test
[root@ceph01 menu]#
(3)在脚本中使用颜色
[root@ceph01 menu]# cat menu-color.sh
#!/bin/bash
# menu using colors
function diskspace {
clear
df -k
}
function whoseon {
clear
who
}
function memusage {
clear
cat /proc/meminfo
}
function menu {
clear
echo
echo -e "\t\t\tSys Admin Menu\n"
echo -e "\t1. Display disk space"
echo -e "\t2. Display logged on users"
echo -e "\t3. Display memory usage"
echo -e "^[[1m\t0. Exit program\n\n^[[0m^[[44;33m"
echo -e "\t\tEnter option: "
read -n 1 option
}
echo "^[[44;33m"
while [ 1 ]
do
menu
case $option in
0)
break ;;
1)
diskspace ;;
2)
whoseon ;;
3)
memusage ;;
*)
clear
echo -e "^[[5m\t\t\tSorry, wrong selection^[[0m^[[44;33m";;
esac
echo -en "\n\n\t\t\tHit any key to comtinue"
read -n 1 line
done
echo "^[[0m"
clear
三、制作窗口
(1)dialog软件包
dialog命令使用命令行参数确定生成的Windows小部件的类型,小部件(widget)是一类Windows元素的dialog软件包术语。
要在命令行上具体指定一个特定的小部件,需要使用双破折号格式:
dialog --widget parameters
msgbox小部件
(未完待续!!!!!!)