基础简介

脚本编程分为:

面向过程          选择结构: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语句的更多相关文章

  1. SHELL脚本编程基础知识

    SHELL脚本编程基础知识 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. Linux之父Linus有一句话很经典:"Talk is cheap, show me the ...

  2. linux基础—课堂随笔_03 SHELL脚本编程基础

    shell脚本编程基础 条件选择:if语句 选择执行: 注意:if语句可嵌套 单分支 if(开头)判断条件:then条件为真的分支代码 fi(结尾) 双分支 if(开头)判断条件:then条件为真的分 ...

  3. Linux shell脚本编程基础之练习篇

    shell脚本编程基础之练习篇. 1.编写一个脚本使我们在写一个脚本时自动生成”#!/bin/bash”这一行和注释信息. #!/bin/bash ] then echo "请输入一个参数& ...

  4. shell脚本编程基础介绍

    Linux系统——shell脚本编程基础介绍 1.什么是shell 它是一个命令解释器,在linux/unix操作系统的最外层,负责直接与用户对话,把用户的输入解释给操作系统,并处理各种操作输出的结果 ...

  5. Linux Shell脚本编程-基础1

    概述:  shell脚本在Linux系统管理员的运维工作中非常重要.shell脚本能够帮助我们很方便的管理服务器,因为我们可以指定一个任务计划,定时的去执行某一个脚本以满足我们的需求.本篇将从编程基础 ...

  6. shell脚本编程基础

       最近学习了shell脚本编程,感觉自己的脚本写的不太好,所以想把shell脚本相关的知识系统的整理一下,便于以后的学习和使用. 一.shell脚本基础    shell脚本是利用shell的功能 ...

  7. 《Linux命令行与shell脚本编程大全 第3版》Shell脚本编程基础---57

    以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下:

  8. Shell脚本编程基础笔记一

    转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/8176137.html 一:脚本文件的创建.格式.运行 1:创建shell脚本 首先,要创建一个文件 touch ...

  9. Shell 脚本编程基础

    通过本文记录学习Linux Shell的一些笔记思考和总结,以加强记忆和理解.主要学习参考资料有: 1.<鸟哥的Linux私房菜-基础篇>第四版 2.菜鸟教程——Linux教程 3.ear ...

随机推荐

  1. 对于解决VS2015启动界面卡在白屏的处理方法

    有时候会遇到这种情况,仅供参考 找到devenv.exe所在文件夹,按住Shift,在空白地方右键,选择“在此处打开命令窗口”,在打开的窗口中输入devenv /ResetSettings 重新设置V ...

  2. 用GraphicsMagick处理svg转png遇到的坑

    1前言 用GraphicsMagick处理svg转png,且背景是透明且没有黑边,由于使用虚拟机的gm版本是1.3.28导致有黑边问题且svg中path中有opacity属性时,加上+antialia ...

  3. Java调用Http/Https接口(7,end)--WebClient调用Http/Https接口

    WebClient是Spring提供的非阻塞.响应式的Http客户端,提供同步及异步的API,将会代替RestTemplate及AsyncRestTemplate.文中所使用到的软件版本:Java 1 ...

  4. PS利用蒙版抠图

    扣图除了用锁套工具外,用蒙版时一个比较快的方法. 前期准备 首先准备一个PS CS6和一个神仙姐姐,一定要先Ctrl+J复制一份图层(不然待会神仙姐姐就找不到了). 使用色阶及反相获取轮廓 使用色阶使 ...

  5. Function.prototype.call.apply作用详解

    关于call()和apply()基本用法可以参阅如下两篇文章: (1).call方法参阅JavaScript call()一章节. (2).apply方法参阅JavaScript apply()一章节 ...

  6. 机器学习 | 聚类分析总结 & 实战解析

    聚类分析是没有给定划分类别的情况下,根据样本相似度进行样本分组的一种方法,是一种非监督的学习算法.聚类的输入是一组未被标记的样本,聚类根据数据自身的距离或相似度划分为若干组,划分的原则是组内距离最小化 ...

  7. 在DoNetCore MVC 中如何使用AutoMapper

    刚开始,按照在donet mvc 的方法写了一遍,发现行不通啊,于是百度了一下,找到这么一篇 https://stackoverflow.com/questions/41284349/automapp ...

  8. day 19 作业

    今日作业 1.什么是对象?什么是类? 对象是特征与技能的结合体,类是一系列对象相同的特征与技能的结合体 2.绑定方法的有什么特点 由对象来调用称之为对象的绑定方法,不同的对象调用该绑定方法,则会将不同 ...

  9. robotframe添加自定义lib 报Importing test library ‘xxxx’ failed

    问题现象:在linux服务器上搭建jenkins 执行robot工程时报:Importing test library  ‘xxxx’   failed 问题分析一: 在library  引入非rob ...

  10. mysql多实例启动过程

    单机多实例,是基本的测试环境 01.myslq提供单机管理多节点 02.启动mysql多实例 03.观察进程