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
  • 相关阅读:
    每天一个小算法(Heapsort)
    每天一个小算法(matlab armijo)
    每天一个小算法(Shell sort5)
    每天一个小算法(Shell Sort3)
    每天一个小算法(Shell Sort2)
    Java并发编程:阻塞队列
    Java并发编程:并发容器之CopyOnWriteArrayList
    Java并发编程:并发容器之ConcurrentHashMap
    Java并发编程:CountDownLatch、CyclicBarrier和Semaphore
    豆瓣的前世今生
  • 原文地址:https://www.cnblogs.com/mhc-fly/p/6871914.html
Copyright © 2011-2022 走看看