处理命令行参数

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

转载于:https://www.cnblogs.com/mhc-fly/p/6871914.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值