shell脚本编程基础之case语句
基础简介
脚本编程分为:
面向过程 选择结构:if语句,单分支、双分支、多分支;case语句
控制结构:顺序结构(默认)
循环结构:for、while、until
面向对象
case语句结构
case VAR_NAME in
var_value1) #value被当做字符一个一个进行比较的;可以使用a-z,A-Z,0-9,[abc]
statement1
...
;;
var_value2)
statement2
...
;;
*)
statement
...
;;
esac
case示例
Example1:
#!/bin/bash
case $1 in
'start')
echo "start service...."
;;
'stop')
echo "stop service...."
;;
'restart')
echo "restart service....."
;;
'status')
echo "Running...."
;;
*)
echo "`basename $0` (start|stop|restart|status)" #`basename $0` 表示脚本本身名
;;
esac
当$1参数值为上面4个中的一个时,执行每个字符下的语句;如果上面哪个字符都不匹配,则执行 *) 下的语句 Example2:
#!/bin/bash
ADD=0
DEL=0
DEBUG=0
for i in `seq $#`;do
case $1 in
-v|--verbose)
DEBUG=1 #输入指定字符,设置变量值,并且使用shift,把当前的$1踢掉,$2变为$1,$3变为$2;这样方便执行循环,这样case可以一直判断$1
shift
;;
-h|--help)
echo "Usage: `basename $0` -v|--verbose --add USER_LIST --del USER_LIST -h|--help"
exit 7
;;
--add)
ADD=1
ADDUSER=$2
shift
;;
--del)
DEL=1
DELUSER=$2 #此位置变量指定需要删除或者添加的用户名
shift
;;
*)
exit 8 #上面都不匹配,执行此条,防止一直循环判定不匹配的$1
;;
esac if [ $ADD -eq 1 ];then
for USER in `echo "$ADDUSER"|sed -n 's/,/ /gp'`;do #取出用户名作为循环的列表
if id $USER &>/dev/null;then
[ $DEBUG -eq 1 ] && echo "$USER exists" #如果执行脚本时添加了-v,则用户存的话进行打印提示信息,不添加-v参数则不进行打印
else
useradd $USER
[ $DEBUG -eq 1 ] && echo "create $USER finished" #如果执行脚本时添加了-v参数,则创建完用户进行提示,不添加参数则不打印提示信息
fi
done
fi if [ $DEL -eq 1 ];then #如果执行脚本添加了--del参数,则上面的DEL变量值为1,值为1就进行下面的循环
for USER in `echo "$DELUSER"|sed -n 's/,/ /gp'`;do #取出$2中的用户名
if id $USER &>/dev/null;then
userdel -r $USER
[ $DEBUG -eq 1 ] && echo "delete $USER finished" #执行脚本时添加了-v参数,则显示相关提示信息,反之则不显示
else
[ $DEBUG -eq 1 ] && echo "$USER not exists" #执行脚本时添加-v参数,把DEBUG变量值变为1,则此条判断成立,执行后面的语句
fi
done
fi done
如果前面加上-v则显示添加过程,不添加-v就不显示,--add user1,xxxxx进行添加用户;--del user1,txwxx删除这些用户,-h查看帮助
shell脚本编程基础之case语句的更多相关文章
- SHELL脚本编程基础知识
SHELL脚本编程基础知识 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. Linux之父Linus有一句话很经典:"Talk is cheap, show me the ...
- linux基础—课堂随笔_03 SHELL脚本编程基础
shell脚本编程基础 条件选择:if语句 选择执行: 注意:if语句可嵌套 单分支 if(开头)判断条件:then条件为真的分支代码 fi(结尾) 双分支 if(开头)判断条件:then条件为真的分 ...
- Linux shell脚本编程基础之练习篇
shell脚本编程基础之练习篇. 1.编写一个脚本使我们在写一个脚本时自动生成”#!/bin/bash”这一行和注释信息. #!/bin/bash ] then echo "请输入一个参数& ...
- shell脚本编程基础介绍
Linux系统——shell脚本编程基础介绍 1.什么是shell 它是一个命令解释器,在linux/unix操作系统的最外层,负责直接与用户对话,把用户的输入解释给操作系统,并处理各种操作输出的结果 ...
- Linux Shell脚本编程-基础1
概述: shell脚本在Linux系统管理员的运维工作中非常重要.shell脚本能够帮助我们很方便的管理服务器,因为我们可以指定一个任务计划,定时的去执行某一个脚本以满足我们的需求.本篇将从编程基础 ...
- shell脚本编程基础
最近学习了shell脚本编程,感觉自己的脚本写的不太好,所以想把shell脚本相关的知识系统的整理一下,便于以后的学习和使用. 一.shell脚本基础 shell脚本是利用shell的功能 ...
- 《Linux命令行与shell脚本编程大全 第3版》Shell脚本编程基础---57
以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下:
- Shell脚本编程基础笔记一
转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/8176137.html 一:脚本文件的创建.格式.运行 1:创建shell脚本 首先,要创建一个文件 touch ...
- Shell 脚本编程基础
通过本文记录学习Linux Shell的一些笔记思考和总结,以加强记忆和理解.主要学习参考资料有: 1.<鸟哥的Linux私房菜-基础篇>第四版 2.菜鸟教程——Linux教程 3.ear ...
随机推荐
- 强大的Grafana k8s 插件
原文参考: https://i4t.com/4152.html 参考:https://blog.csdn.net/mailjoin/article/details/81389700 插件链接:http ...
- linux搭建GitLab
GitLab CentOS6 1. 安装VMware和CentOS 2. 安装必备Linux插件 3. 准备安装GitLab 4. 开始安装GitLab 5. 配置GitLab 6. 启动GitLab ...
- Github下载慢和下载过程中断等情况的解决方案
Github下载慢和下载过程中断等情况的解决方案 最近老大push项目,正常的git clone每次都是下载一部分就断掉了. 尝试了修改hosts文件的方式,更换了延迟最低的域名也没啥用(难道我姿 ...
- Unicode 字符和UTF编码的理解
Unicode 编码的由来 我们都知道,计算机的内部全部是由二进制数字0, 1 组成的, 那么计算机就没有办法保存我们的文字, 这怎么行呢? 于是美国人就想了一个办法(计算机是由美国人发明的),也把文 ...
- 仿EXCEL插件,智表ZCELL产品V1.7 版本发布,增加自定义右键菜单功能
详细请移步 智表(ZCELL)官网www.zcell.net 更新说明 这次更新主要应用户要求,主要解决了自定义右键菜单事件的支持,并新增了公式中自定义函数传参.快捷键剪切等功能,欢迎大家体验使用. ...
- Flask第三方组件 之 Flask-Session
原生session:交由客户端保管机制,安全性相对较差,优势是一点都不占用服务器空间 Flask-Session: 解决原生session的劣势 安装包 from flask import Flask ...
- 【OGG】 RAC环境下管理OGG的高可用 (五)
[OGG] RAC环境下管理OGG的高可用 (五) 一.1 BLOG文档结构图 一.2 前言部分 一.2.1 导读 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道 ...
- PDF 补丁丁 0.6.2.3572 测试版发布
近日有网友反馈 3571 测试版的补丁丁无法正常工作.请下载新发布的 3572 版本.
- elasticsearchTemplate操作es
ElasticsearchTemplate是spring对java api的封装 maven依赖: <dependency> <groupId>org.springframew ...
- windows下用纯C实现一个简陋的imshow:基于GDI
intro 先前实现了GDI显示图像时设定窗口大小为图像大小,不过并没有刻意封装函数调用接口,并不适合给其他函数调用.现在简单封装一下,特点: 纯C 基于GDI,因此只支持windows平台 类似于o ...