Shell分支语句

case 值 in
模式1)
command1
command2
command3
;;
模式2)
command1
command2
command3
;;
*)
command1
command2
command3
;;
esac

说明:case后为取值,值后为关键字 in,接下来是匹配的各种模式,每一模式最后必须以右括号结束。

值可以为变量或常数。  ;;类似C语言的break,不可取消!

举例:

#!/bin/sh
#auther:linuxdaxue.com
#date:--
case $ in
start | begin)
echo "I am started!"
;;
stop | end)
echo "I am stopped!"
;;
*)
echo "Other command!"
;;
esac

说明:这个脚本练习的是模式匹配,模式匹配支持‘|’符,有一个条件符合就会执行命令。

举例2:

PROJECTNAME="zynq";

#call fun
printPwd()
{
#echo pwd
echo "current directory is `pwd`";
} case "$1" in
#启动服务
create)
if [ -d $PROJECTNAME ] ;then
echo "文件夹$PROJECTNAME已存在,删除后重新创建";
#删除目录,成功返回0
rm -rf $PROJECTNAME;
fi
#创建目录,成功返回0
mkdir $PROJECTNAME;
if [ $? != ];then
echo "创建文件夹失败,请重试!";
exit -;
fi ;; delete)
if [ ! -d $PROJECTNAME ] ;then
echo "文件夹$PROJECTNAME 不存在,请重试";
exit ;
fi #删除目录,成功返回0
rm -rf $PROJECTNAME;
if [ $? != ];then
echo "删除文件夹失败,请重试!";
exit -;
fi
;; *)
#处理其他情况,显示用法
echo "你输入的参数错误,请输入以下参数:{create|delete}";
exit -;
;; esac cd $PROJECTNAME;
printPwd; echo "last line"; exit ;

这里利用case语句建立一个类似Makefile的功能。

参数为create时,检测文件夹是否存在,若存在则删除。 重新建立新的文件夹

参数为delete时,检测文件夹是否存在,若不存在则强制退出。删除文件夹。

参数为其他时,输出正确的参数提示。

linux shell学习四的更多相关文章

  1. Linux shell 学习

    ·详细介绍Linux shell脚本基础学习(一) ·详细介绍Linux shell脚本基础学习(二) ·详细介绍Linux shell脚本基础学习(三) ·详细介绍Linux shell脚本基础学习 ...

  2. 【转】十分有用的linux shell学习总结

    在最近的日常工作中由于经常会和Linux服务器打交道,如Oracle性能优化.我们 数据采集服务器的资源利用率监控,以及Debug服务器代码并解决其效率和稳定性等问题.因此这段时间总结的有关Linux ...

  3. linux shell学习之shell流程控制

    在linux shell编程中,流程控制结构与语句,也算是shell脚本中的重点了,不了解的朋友,跟随脚本小编一起来学习下吧. linux控制流结构学习. 一,shell控制流结构 1.控制结构   ...

  4. Linux Shell 学习笔记 一 目录结构

    以Red Hat Enterprise Linux 各版本为例,RHEL中目录具体作用如下, /bin       存放普通用户使用的命令 /sbin     存放管理员可以执行的命令 /home   ...

  5. linux shell学习笔记二---自定义函数(定义、返回值、变量作用域)介绍

    linux shell 可以用户定义函数,然后在shell脚本中可以随便调用.下面说说它的定义方法,以及调用需要注意那些事项. 一.定义shell函数(define function) 语法: [ f ...

  6. Linux & Shell 学习笔记【1/2】

    因为工作上的需要,花了些许时间去熟悉学习Linux和Shell,现在也花点事件在此记录一下以加强巩固学习的内容吧.学的不算深入,所以都是一些比较junior的内容. 在下一篇随笔会详述之前写的一个用于 ...

  7. linux shell学习笔记

    一  变量 声明变量: my_var='ddd'使用变量: ${my_var}设置为只读变量: readonly my_var删除变量: unset my_var 注意只读变量不能被删除 变量类型:( ...

  8. Linux Shell 学习笔记

    2.return与exit区别 return 表示从被调函数返回到主调函数继续执行,返回时可附带一个返回值,由return后面的参数指定,当然如果是在主函数main, 自然也就结束当前进程了,如果不是 ...

  9. linux shell学习记录

    1.shell脚本开始以 #! /usr/bin 这个叫做Shebang 这个指定解释器的路径 2.shell 一些配置在~/.bashrc中,运行的历史shell命令在~/.bash_history ...

随机推荐

  1. Scrum立会报告+燃尽图(十月十日总第一次):选题

    此作业要求参见:https://edu.cnblogs.com/campus/nenu/2018fall/homework/2190 Scrum立会master:付佳 一.小组介绍 组长:付佳 组员: ...

  2. lintcode-425-电话号码的字母组合

    425-电话号码的字母组合 Given a digit string excluded 01, return all possible letter combinations that the num ...

  3. MySQL 备份和恢复 理论知识

    为什么要备份 数据无价   制定备份策略的注意点 1:可容忍丢失多少数据     2:恢复需要在多长时间内完成     3:备份的对象   数据.二进制日志和InnoDB的事务日志.SQL代码(存储过 ...

  4. 团队项目-BUG挖掘

    测试硬件: 华为畅享5 测试平台: 安卓5.1 测试项目Git地址: https://github.com/RABITBABY/We-have-bing 测试Apk来源地址: http://www.a ...

  5. 第83天:jQuery中操作form表单

    操作form表单 1. 属性操作 设置属性: // 第一个参数表示:要设置的属性名称 // 第二个参数表示:该属性名称对应的值 $(selector).attr(“title”, “传智播客”); 获 ...

  6. BZOJ 2299 向量(裴蜀定理)

    题意:给你一对数a,b,你可以任意使用(a,b), (a,-b), (-a,b), (-a,-b), (b,a), (b,-a), (-b,a), (-b,-a)这些向量,问你能不能拼出另一个向量(x ...

  7. BZOJ 3626 LCA(离线+树链剖分)

    首先注意到这样一个事实. 树上两个点(u,v)的LCA的深度,可以转化为先将u到根路径点权都加1,然后求v到根路径上的总点权值. 并且该题支持离线.那么我们可以把一个区间询问拆成两个前缀和形式的询问. ...

  8. 【bzoj3992】[SDOI2015]序列统计 原根+NTT

    题目描述 求长度为 $n$ 的序列,每个数都是 $|S|$ 中的某一个,所有数的乘积模 $m$ 等于 $x$ 的序列数目模1004535809的值. 输入 一行,四个整数,N.M.x.|S|,其中|S ...

  9. Android 分Dex (MultiDex)

    需要分Dex的理由想必大家都知道了.正是在ART以前的Android系统中,Dex文件对于方法索引是用一个short类型的数据来存放的.而short的最大值是65535,因此当项目足够大包含方法数目足 ...

  10. CF521D Shop 贪心

    题意: \(n\)个数,有\(m\)个操作,形如: 1,将\(x_i\)​改成\(val_i\)​ 2,将\(x_i\)加上\(val_i\)​ 3,将\(x_i\)​乘上\(val_i\) 其中第\ ...