zoukankan      html  css  js  c++  java
  • 处理命令行参数

    funcs=($(declare -F -p | cut -d " " -f 3))

    until
        if [ ! -z "$1" ]; then
            # check if the first arg is a function in this file, or use a default
            if [[ " ${funcs[@]} " =~ " $1 " ]]; then
                cmd=$1
                shift 1
            else
                cmd="a"
            fi

            $cmd "$@"
            if [ $? == 127 ]; then
                help
            fi

            exit
        else
            help
        fi
    do
        echo
    done

    --------------------------------

    测试:

    #!/bin/bash

    #set -e

    help(){
        echo "help"
    }

    a(){
    echo "aaaaaaa"
    }

    b(){
    echo "bbbbbb"
    }

    c(){
    echo "cccccc"
    }

    funcs=($(declare -F -p | cut -d " " -f 3))

    until
        if [ ! -z "$1" ]; then
            # check if the first arg is a function in this file, or use a default
            if [[ " ${funcs[@]} " =~ " $1 " ]]; then
                cmd=$1
                shift 1
            else
                cmd="a"
            fi

            $cmd "$@"
            if [ $? == 127 ]; then
                help
            fi

            exit
        else
            help
        fi
    do
        echo
    done

    -----------------------

    [root@mhc sh]# ./a
    help
    [root@mhc sh]# ./a a
    aaaaaaa
    [root@mhc sh]# ./a b
    bbbbbb
    [root@mhc sh]# ./a c
    cccccc
    [root@mhc sh]# ./a  a b
    aaaaaaa
    [root@mhc sh]# ./a  a b c
    aaaaaaa
    [root@mhc sh]# ./a  b c
    bbbbbb
    [root@mhc sh]# ./a  b c d
    bbbbbb
    [root@mhc sh]# ./a   d
    aaaaaaa
    -------------------------------------

    a(){
    echo "$1"
    }

    ---------

    [root@mhc sh]# ./a a hahah
    hahah
    ---------------------------

    =====================================================

    until
    cmd=$1
    if [[ -z "$cmd" ]]; then
    help
    fi
    shift 1
    $cmd "$@"
    [ "$?" -ne 127 ]
    do
    help
    exit
    done
  • 相关阅读:
    Spring bean作用域
    软件类说明文档排版建议
    fit_line_contour_xld拟合直线的五种算法的准确度比较
    .Net优秀开源(5)SqlSugar
    .NET[C#]中实现实体对象深拷贝(克隆/复制)的几种方法
    spring框架学习(14)AOP(中)
    .Net优秀开源(4)Castle.Core
    .Net优秀开源(3)Dapper
    .Net优秀开源(2)Autofac
    .Net优秀开源(1)
  • 原文地址:https://www.cnblogs.com/mhc-fly/p/6871914.html
Copyright © 2011-2022 走看看