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
  • 相关阅读:
    C#在winform中操作数据库,实现数据增删改查
    未开启Hyper-V,却提示VMware Workstation与Hyper-V不兼容。
    winform实例(5)-截屏工具+保存
    winform实例(4)-播放器(wmp)
    winform实例(3)-利用摄像头进行拍照
    winform实例(2)-简单浏览器
    winform实例(1)-简单记事本
    C#异常处理
    百度文库下载破解
    学习小技能-封装字段
  • 原文地址:https://www.cnblogs.com/mhc-fly/p/6871914.html
Copyright © 2011-2022 走看看