标签:auth 建立 输入 nbsp 重试 一个 exit 支持 int
case 值 in 模式1) command1 command2 command3 ;; 模式2) command1 command2 command3 ;; *) command1 command2 command3 ;; esac
说明:case后为取值,值后为关键字 in,接下来是匹配的各种模式,每一模式最后必须以右括号结束。
值可以为变量或常数。 ;;类似C语言的break,不可取消!
举例:
#!/bin/sh #auther:linuxdaxue.com #date:2016-05-30 case $1 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 [ $? != 0 ];then echo "创建文件夹失败,请重试!"; exit -1; fi ;; delete) if [ ! -d $PROJECTNAME ] ;then echo "文件夹$PROJECTNAME 不存在,请重试"; exit 1; fi #删除目录,成功返回0 rm -rf $PROJECTNAME; if [ $? != 0 ];then echo "删除文件夹失败,请重试!"; exit -1; fi ;; *) #处理其他情况,显示用法 echo "你输入的参数错误,请输入以下参数:{create|delete}"; exit -1; ;; esac cd $PROJECTNAME; printPwd; echo "last line"; exit 0;
这里利用case语句建立一个类似Makefile的功能。
参数为create时,检测文件夹是否存在,若存在则删除。 重新建立新的文件夹
参数为delete时,检测文件夹是否存在,若不存在则强制退出。删除文件夹。
参数为其他时,输出正确的参数提示。
标签:auth 建立 输入 nbsp 重试 一个 exit 支持 int
原文地址:http://www.cnblogs.com/shuqingstudy/p/7490400.html