shell脚本的参数传递一例

作者: My熊猫眼 | 来源:发表于2020-05-28 15:12 被阅读0次

    在shell脚本中,我们也可以像其他编程语言一样处理传递的option以及对应的值,比如:
    既支持 --name=<NAME>, 也支持 --name <NAME>, 那么如何才能做到呢?
    看下面的例子:

    [root@localhost ~]# cat test.sh
    #!/bin/bash
    name="Bingo"
    while [ $# -gt 0 ];do
            case $1 in
            --name*)
                    if [[ $1 == --name\=* ]];then  #如果option后面有等号,那么需要用#来截取变量$1获得对应的值,
                    name=${1#--name=}
                    else
                    name=$2     #如果option后面没有等号,那么后面的参数,也就是$2必然是option对应的值,因为没有用等号进行连接,所以需要用shift 来对位置参数进行移位处理;
                    shift   
                    fi
                    ;;
            *)
                    args=$1
                    ;;
            esac
            shift
    done
    echo Welcome.$name.$args
    [root@localhost ~]# ./test.sh --name China
    Welcome.China.
    [root@localhost ~]# ./test.sh --name=China
    Welcome.China.
    [root@localhost ~]#
    

    在这个例子中,通过判断传递的参数是否包含"=", 从而获取相应参数对应的参数值. 实现对传入参数以及参数值的获取。

    这个使用技巧在系统中的很多shell脚本中都有体现,所以想提高shell 脚本的能力,多多阅读系统中的shell脚本吧,一定会有意外的收获哦。

    本文原创,转载请注明出处。

    相关文章

      网友评论

        本文标题:shell脚本的参数传递一例

        本文链接:https://www.haomeiwen.com/subject/kpnoahtx.html