Shell脚本编程---在脚本中添加颜色(八)

本文介绍如何使用Shell脚本创建文本菜单,包括使用case和select命令构建菜单逻辑,添加颜色增强菜单界面,以及利用dialog软件包制作窗口式菜单。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、创建文本菜单

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小部件

 

(未完待续!!!!!!)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值