linux多选项菜单脚本,linux shell 编写菜单脚本事例

menu2文件代码:

---

#!/bin/sh

#menu2

#Main menu script

#ignore ctrl-c and QUIT interrupts

trap "" 2 3 15

MYDATE=`date +%d/%m/%Y`

THIS_HOST=`hostname -s`

USER=`whoami`

#user level file

USER_LEVELS=priv.user

#hold file

HOLD1=hold1.$$

#colour function

function colour ()

{

case $1 in

black_green)

echo '[40;32m'

;;

black_yellow)

echo '[40;33m'

;;

black_white)

echo '[40;37'

;;

black_cyan)

echo '[40;36m'

;;

red_yellow)

echo '[41;33m'

;;

esac

}

#just read a single key please

function get_char()

{

#get_char

#save current stty setting

SAVEDSTTY=`stty -g`

stty cbreak

dd if=/dev/tty bs=1 count=1 2>/dev/null

stty -cbreak

#restore stty

stty $SAVEDSTTY

}

#turn the cursor on or off

function cursor ()

{

#turn cursor on/off

_OPT=$1

case $_OPT in

on ) echo '[?25h'

;;

off) echo '[?25l'

;;

*) return 1

;;

esac

}

#check what privilege level the user has

function restrict ()

{

colour red_yellow

echo -e -n "\n\n\007 Sorry your are not authorised to use this function"

colour black_green

}

function user_level ()

{

#read in the priv.user file

while read LINE

do

case $LINE in

#ignore comments

\#*) ;;

*) echo $LINE>>$HOLD1

;;

esac

done < $USER_LEVELS

FOUND=false

while read MENU_USER PRIV

do

if [ "$MENU_USER" = "$USER"  ] ; then

FOUND=true

case $PRIV in

yes|YES)

return 0

;;

no|NO)

return 1

;;

esac

else

#no match found read next record

continue

fi

done

if [ "$FOUND" = "false" ] ; then

echo "Sorry $USER  you have not been authorsied to use this menu"

exit 1

fi

}

#called when user selects quit

function my_exit ()

{

colour black_white

cursor on

rm *.$$

exit 0

}

tput init

#display their user levels on the screen

if user_level ; then

ACCESS="Access Mode is High"

else

ACCESS="Access Mode is Normal"

fi

tput init

while :

do

tput clear

colour black_green

cat <

$ACCESS

---------------------------------------------------------------------

User:$USER                 Host:$THIS_HOST            Date:$MYDATE

---------------------------------------------------------------------

1:ADD A RECORD

2:VIEW A RECORD

3:PAGE ALL RECORD

4:CHANGE A RECORD

5:DELETE A RECORD

P:PRINT ALL RECORDS

H:Help screen

Q:Exit Menu

---------------------------------------------------------------------

MAYDAY

colour black_cyan

echo -e -n "\tYour Choice [1,2,3,4,5,P,H,Q] >"

CHOICE=`get_char`

case $CHOICE in

1) ls

;;

2) vi

;;

3) who

;;

4) if user_level; then

ls -l | wc

else

restrict

fi

;;

5) if user_level;then

sort  /etc/passwd

else

restrict

fi

;;

P|p) echo -e "\n\nPrinting recirds ......"

;;

H|h)

tput clear

cat <

This is the help screen ,nothing here yet to help you!

MAYDAY

;;

Q|q) my_exit

;;

*) echo -e "\t\007unknown user respense"

;;

esac

echo -e -n "\tHit the return key to continue"

read DUMMY

done

---

priv.user 文件代码:

#root quanxian wei  YES, daia quanxianwei no

root   yes

daia   no

-----------------------------------

脚本执行后界面如下图:

0818b9ca8b590ca3270a3433284dd417.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/571798.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python简单爬虫入门一_Python爬虫快速入门:基本结构简单实例

本爬虫系列入门教程假设读者仅有一点点Python基础或者近乎为零的基础。如果是有Python基础的可以跳过一些对于Python基本知识的补充。 爬虫能干什么呢&#xff1f;一句话概括&#xff0c;正常通过浏览器可以获取的数据&#xff0c;爬虫都可以获取。这句话可以说是包罗万象。一是…

Windows下rocketmq mqnamesrv.exe 启动成功,但是mqbroker.exe启动失败

1、mqnamesrv.exe启动成功 2、启动mqbroker.exe失败 解决办法&#xff0c;删除C:\Users\"当前系统用户名"\store下的所有文件&#xff0c;就可以了转载于:https://www.cnblogs.com/roujingchuxia/p/7685796.html

python加入中小学课程_通知:中小学将新增一门课!对2008-2013年出生的孩子影响最大!...

很多家长都在发愁&#xff1a; “现在孩子竞争这么激烈&#xff0c;奥数、外语、舞蹈、钢琴...样样都行&#xff0c;我该让孩子学点什么&#xff0c;才不会被同龄人甩下&#xff1f;” 其实&#xff0c;人工智能时代&#xff0c;孩子们的竞争战地正在转到——少儿编程&#xff…

linux 网络连接未知,ubuntu – 网络问题. Ifup说未知界面

这是ifconfig的输出# ifconfigenp0s3 Link encap:Ethernet HWaddr 08:00:27:ef:b6:e6inet addr:192.168.2.3 Bcast:192.168.2.255 Mask:255.255.255.0inet6 addr: fe80::cf19:776a:4d5c:36e0/64 Scope:LinkUP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1RX packets:713069 …

linux --- vsftp

vsftp 一、简介与原理 1、VSFTP&#xff08;very secuery file tranfer protocol&#xff09; 2、主动模式&#xff1a; 3、被动模式&#xff1a; 4、服务器程序&#xff1a; > vsftpd 5、install&#xff1a; >vaftpd-2.2.2-11.e16.i686.rpm >yum -y install vsftpd …

go tcp客户端自动重连_使用 Go 语言创建 WebSocket 服务

今天介绍如何用 Go 语言创建 WebSocket 服务&#xff0c;文章的前两部分简要介绍了 WebSocket 协议以及用 Go 标准库如何创建 WebSocket 服务。第三部分实践环节我们使用了 gorilla/websocket 库帮助我们快速构建 WebSocket 服务&#xff0c;它帮封装了使用 Go 标准库实现 WebS…

linux系统终端more,一篇文章让你学透Linux系统中的more命令

Linux系统下有很多实用工具可以让你在终端界面查看文本文件。其中一个就是 more。more 跟我之前另一篇文章里写到的工具 —— less 很相似。它们之间的主要不同点在于 more 只允许你向前查看文件。尽管它能提供的功能看起来很有限&#xff0c;不过它依旧有很多有用的特性值得你…

简单说下C#变量的作用域

变量的作用域分为局部变量和全局变量举个小例子 class Program { int i 3;//这个变量i 需要实例化Program才能使用 static void Main(string[] args) { Program aa new Program(); int g aa.i; int i 5;//这个变量i只能作用在Main方法中 int f i; Console.WriteLine(f); C…

python项目开发案例集锦_在线分享 | 在 VS Code 中一站式完成 Python 项目开发

往期活动回顾VS Code 中文社区自成立以来&#xff0c;已经举办了4场活动&#xff1a;Workshop &#xff5c; First Step to VS Code 基础篇 Workshop &#xff5c; First Step to VS Code 进阶篇 在线沙龙 &#xff5c; 程序员职业生涯如何不迷茫 干货回顾 &#xff5c; VS Cod…

jvm--Garbage Collection

垃圾回收&#xff08;GC&#xff09;一直是java语言的重中之重。 1 对象状态鉴别 1.1 标记对象是否可回收一般有两种算法&#xff1a; 引用计数算法&#xff1a;给每个对象添加一个引用计数器&#xff0c;当引用一次时1&#xff0c;当引用时效时-1&#xff0c;当计数器为0时即可…

linux安装mongo卸载mongo,CentOS7安装及卸载MongoDB.md

安装 MongoDB 社区版本配置 yum 包管理系统创建 /etc/yum.repos.d/mongodb-org-4.2.repo 文件&#xff0c;这样你就可以使用 yum 安装 MongoDB&#xff0c;文件内容如下&#xff1a;123456[mongodb-org-4.2]nameMongoDB Repositorybaseurlhttps://repo.mongodb.org/yum/redhat/…

程序固化到优盘中_将Windows 8/10 系统装进优盘

介绍Windows To Go技术Windows 有一项相当吸引人的神奇功能——“Windows To Go”&#xff0c;它可以让你将 Windows 完整安装到U盘、移动硬盘等便携设备上&#xff0c;并且能随处在不同的电脑硬件上直接运行&#xff0c;让系统可以随身携带&#xff01;简单说来&#xff0c;这…

如何获得物体的主要方向?

问题来源为网友提供的资料&#xff0c;原文地址为&#xff1a;《Object Orientation, Principal Component Analysis & OpenCV》 问题描述&#xff1a;对于这样的图像&#xff08;2副&#xff0c;采用了背投光&#xff09;&#xff0c;如何获得上面工件的主要方向主要思路&…

Linux的开源免费办公软件,开源免费Office办公套件(LibreOffice)

LibreOffice是一款全面的开源免费Office办公套件&#xff0c;软件拥有强大的数据导入和导出功能&#xff0c;能直接导入 PDF 文档、微软 Works、LotusWord&#xff0c;支持主要的 OpenXML 格式。软件本身并不局限于 Debian 和Ubuntu 平台&#xff0c;支持 Windows、Mac、PRM pa…

iOS11最新隐私信息访问列表

今天早上应用出现拍照上传闪退的紧急bug&#xff0c;才发现在iOS11中&#xff0c;隐私权限配置又发生了改变&#xff0c;将原来的相册访问权限分开了&#xff0c;现在有读写两种权限。 iOS11访问权限列表 隐私数据对应key值提示语相册(读)NSPhotoLibraryUsageDescription"…

linux make教程,Linux下makefile的一个简单框架

目录结构tree.|-- Makefile-- src|-- Makefile|-- bar| |-- Makefile| -- bar.c-- foo|-- Makefile-- foo.c3 directories, 6 files顶层Makefile# Makefile for top directory# phony target.PHONY: all debug release clean#all: release#debug:$(MAKE) -C src debug#release:…

ubuntu安装ftp_如何在 Ubuntu 20.04 上安装 Webmin

本文最先发布在&#xff1a; 如何在 Ubuntu 20.04 上安装 Webmin​www.itcoder.techWebmin 是一个开源控制面板&#xff0c;它允许你通过简单易用的 Web 界面&#xff0c;就可以管理你的 Linux 服务器。它允许你管理用户&#xff0c;组&#xff0c;磁盘配额&#xff0c;创建文件…

开机启动

shell:startup 转载于:https://www.cnblogs.com/baiquan/p/7691968.html

linux飞行模式自动开机,解决 win10飞行模式 无限自动开关 无法关闭

Linux 中 Vi 编辑器的简单操作Linux 中 Vi 编辑器的简单操作 Vi 编辑器一共有3种模式:命名模式(默认),尾行模式,编辑模式.3种模式彼此需要切换. 一.进入 Vi 编辑器的的命令 vi filename //打开或新 ...WPF好看的进度条实现浅谈(效果有点类似VS2012安装界面)为了界面友好,一般的…

c++ auto用法_不想写表达式的类型?试试auto吧

作者&#xff1a;守望&#xff0c;Linux应用开发者&#xff0c;目前在公众号【编程珠玑】 分享Linux/C/C/数据结构与算法/工具等原创技术文章和学习资源。前言你以为我说的自动变量类型auto吗&#xff1f;非也&#xff0c;我们知道C语言中其实也有auto关键字&#xff0c;它和早…