linux shell学习四

Shell分支语句

casein
模式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时,检测文件夹是否存在,若不存在则强制退出。删除文件夹。

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

原文地址:https://www.cnblogs.com/shuqingstudy/p/7490400.html