Linux Bash Shell 实例分享
菜单效果如下所示:分别输入按键,根据输入后的提示就可以执行相应的命令
按键1:添加用户
按键2:设置密码
按键3:删除用户
按键4:展示分区空间
按键5:展示内存使用空间
按键6:退出菜单
以上只是举个简单的实例,在生产一线中,由于很多命令即复杂又特别的长,更可气的是,这条命令还特别常用,为了高效维护,我们将许多的复杂命令就写成了菜单的形式,只用根据对应提示,输入对应的数字,即可实现相应的功能。
例如:我要添加一个新的用户,用户名为user123,那么只需要输入按键1后,再追加用户名即可
并且输入错误时,还能给出响应提示,例:我在上文创建了user123这个用户,此时再创建user123,就会给出响应提示
例如:输入按键5时,就能输出内存空间使用情况的报表
菜单总文件如下所示:(这里我将代码放在了/mnt目录下)
以下是menu.sh的代码示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
#!/bin/bash #menu.sh function myMenu(){ title="My menu" title=`echo -e "\033[32;40m ${title} \033[0m"` url="www.xhyonline.com" time=`date +%Y-%m-%d` clear cat << eof ########################################## $title ########################################## * 1)add a user * 2)set password for user * 3)delete a user * 4)print disk space * 5)print mem space * 6)quit ########################################## $url $time eof #cat << eof的作用是按源代码输出 } |
以下是index.sh的代码示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 |
#/bin/bash #index.sh . /mnt/menu.sh #引入menu.sh文件 myMenu #调用myMenu函数 while [[ true ]]; do read -p "please input your option:" option case $option in 1) read -p "please input username for user:" name useradd $name &>/dev/null #执行useradd命令,且将这命令标准输出和错误输出全部重定向到/dev/null中,也就是将产生的所有信息丢弃 #因此我们要在下面输出一段用户生成成功的提示 if [[ $? -eq 0 ]]; then #$?的作用为判断上一条命令是否执行成功 echo -e "\033[30;47m add user successful \033[0m" #用户创建成功 else echo -e "\033[31;47m error user $name is created!!!!! \033[0m" #用户重复创建,创建失败 fi ;; 2) read -p "please input username:" name read -p "please input password for user:" password echo $password | passwd --stdin $name &>/dev/null #执行设置密码命令,且将这命令标准输出和错误输出全部重定向到/dev/null中,也就是将产生的所有信息丢弃 #命令解释:给$name这个参数的用户设置密码,密码为$password参数的内容,--stdin为passwd快捷设置密码的方法 if [[ $? -eq 0 ]]; then #$?的作用为判断上一条命令是否执行成功 echo -e "\033[30;47m password set successful \033[0m" #密码设置成功 else echo -e "\033[31;47m error password set fail!!!!! \033[0m" #密码设置失败 fi ;; 3) read -p "delete a user:" name userdel -r $name &>/dev/null #执行删除命令 if [[ $? -eq 0 ]]; then #$?的作用为判断上一条命令是否执行成功 echo -e "\033[30;47mdelete user successful\033[0m" #删除用户成功 else echo -e "\033[31;47m error delete user fail!!!!! \033[0m" #删除用户失败 fi ;; 4) echo -e "\033[32;40m `free -m` \033[0m" #执行df -Th这条命令查看磁盘空间 ;; 5) echo -e "\033[32;40m `df -Th` \033[0m" #执行df -Th这条命令查看内存空间 ;; 6) echo -e "\033[31;47m quit successful \033[0m" break ;; *) myMenu ;; esac done |
这里需要留心的是,执行shell脚本需要给文件执行权限
命令:chmod o+x index.sh
命令:chmod o+x menu.sh
此时输入命令:/mnt/index.sh 就能实现该功能效果,再使用alias别名命名,就可以像使用ls查看目录一样使用了
结语:好久没动代码了,有些手生,文章中有些英语语法的错误- -各位不要在意,主要是分享下菜单制作的主要思路,菜单约等于命令集合的封装,菜单化的界面简直就是新手的福音........
© 著作权归作者所有
文章评论(2)
嘿嘿嘿,我也想学shell编程,但是目前php框架还有太多需要学的了,laravel完了接着就是tp了
@梁桂锋 我最近刚考完试 另外就是,你这个头像绝了哈哈哈