zoukankan      html  css  js  c++  java
  • 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时,检测文件夹是否存在,若不存在则强制退出。删除文件夹。

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

  • 相关阅读:
    Linux Shell入门
    Linux系统结构
    Ubuntu bond 配置
    VXLAN概述
    lsof
    入驻博客园,希望可以跟大家一起讨论,一起学习和进步。
    版本管理工具小乌龟TortoiseGit的安装和使用(2)
    版本管理工具小乌龟TortoiseGit的安装和使用(1)
    定义变量时未初始化赋值的问题
    BlackBerry 9900刷机
  • 原文地址:https://www.cnblogs.com/shuqingstudy/p/7490400.html
Copyright © 2011-2022 走看看