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 ...
随机推荐
- WPF 的命令的自动刷新时机——当你 CanExecute 会返回 true 但命令依旧不可用时可能是这些原因
原文:WPF 的命令的自动刷新时机--当你 CanExecute 会返回 true 但命令依旧不可用时可能是这些原因 在 WPF 中,你可以使用 Command="{Binding Walt ...
- Ambari深入学习(II)-实现细节
在第一节中,我们简单讲了一下Ambari的系统架构.我们这一节主要分析Ambari的源代码,总览Ambari的具体实现方式及其工作细节. 一.Ambari-Server启动 Ambari-Server ...
- 1.将控制器添加到 ASP.NET Core MVC 应用
模型-视图-控制器 (MVC) 体系结构模式将应用分成 3 个主要组件:模型 (M).视图 (V) 和控制器 (C). 模型(M):表示应用数据的类. 模型类使用验证逻辑来对该数据强制实施业务规则. ...
- 关于.Net使用企业库访问MySql数据库
关于.Net使用企业库访问MySql数据库 在网上看了很多又重写又加WebConfig中的内容,其实不用那么麻烦 企业库5.0访问MySql数据库只需要在Web服务器安装mysql-connector ...
- sping boot/cloud配置文件 on 读取为true
sping boot/cloud配置文件 on 读取为true 原文地址:https://blog.csdn.net/hb9176070/article/details/82749771 最近在写sp ...
- Position定位相关知识了解
一.定位 position属性 1.默认定位: position:static; 元素框正常生成.块级元素生成一个矩形框,作为文档流的一部分,行内元素则会创建一个或多个行框,置于其 ...
- 微信小程序代码开源啦
想学习如何使用mpvue开发微信小程序吗? 想知道微信消息推送如何实现吗? 想知道如何用springboot开发小程序后台吗? 看这里就全都有了.耗时一个月打造的微信小程序:PSN折扣助手前后端所有源 ...
- Flask 和 Django 框架的区别
1)Flask Flask确实很“轻”,不愧是Micro Framework,从Django转向Flask的开发者一定会如此感慨,除非二者均为深入使用过 Flask自由.灵活,可扩展性强,第三方库的选 ...
- Nginx配置Yii:backend&frontend
#My vlson.top project #frontend server { listen 80; server_name www.vlson.com; #charset koi8-r; set ...
- JS 对象 数组求并集,交集和差集
一.JS数组求并集,交集和差集 需求场景 最近,自己项目中有一些数组操作,涉及到一些数学集的运算,趁着完成后总结一下. 简化问题之后,现有两数组a = [1, 2, 3],b = [2, 4, 5], ...