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 --- 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;不过它依旧有很多有用的特性值得你…

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…

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

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

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

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

浅谈内存映射I/O(MMIO)与端口映射I/O(PMIO)的区别

最近在看NVMeDirect和SPDK的源码&#xff0c;觉得有必要梳理一下MMIO和PMIO的区别。关于MMIO和PMIO&#xff0c;维基百科上是这么讲滴&#xff0c; Memory-mapped I/O (MMIO) and port-mapped I/O (PMIO) (which is also called isolated I/O) are two complementary methods o…

linux sftp密码错误,linux个别用户sftp坏掉,验证密码后卡住, 大概是什么问题?...

问题描述linux个别用户sftp坏掉&#xff0c;验证密码后卡住&#xff0c; 大概是什么问题&#xff1f;所有采用sftp的软件都不能用了winsshfs 点击mount后就卡住xftp 连接验证结束后也卡住sublimeText3 的sftp插件也不好用了突然发生的情况之前一直用着都没有问题一直正常使用 只…

c语言 结构体_C语言 技能提升 系列文章 (三)结构体

今天&#xff0c;来跟大家聊一聊C语言中的结构体。在C语言的各种数据类型中&#xff0c;结构体最特别&#xff0c;因为它是可以被程序员定义的&#xff0c;它的特点是非常的灵活。定义struct defined_name{type_name field_name;};结构体内部的成员可以是任意类型的数据&#x…

基于@FeignClient注解实现两个微服务之间接口的调用(简单)

场景需求&#xff1a;微服务A中的接口input需要调用微服务B中接口的output数据。 实现&#xff1a;使用feign实现即可。 微服务B中的接口&#xff1a; 步骤一&#xff1a;微服务A中编写一个接口&#xff0c;该接口就是调用微服务B的接口&#xff1b;需要在接口上添加FeignClien…

spring boot 自动跳转登录页面_徒手撸一个扫码登录示例工程

徒手撸一个扫码登录示例工程不知道是不是微信的原因&#xff0c;现在出现扫码登录的场景越来越多了&#xff0c;作为一个有追求、有理想新四好码农&#xff0c;当然得紧跟时代的潮流&#xff0c;得徒手撸一个以儆效尤本篇示例工程&#xff0c;主要用到以下技术栈qrcode-plugin&…

inputstreamreader未关闭会导致oom_ThreadLocal 一定会导致内存泄露?

在面试的时候&#xff0c;ThreadLocal作为高并发常用工具经常会被问到。而面试官比较喜欢问的问题有以下两个&#xff1a;1、ThreadLocal是怎么实现来保证每个线程的变量副本的。2、ThreadLocal的内存泄露是怎么产生的&#xff0c;怎么避免内存泄露。首先我们来看第一个问题&am…