Linux运维进阶-Python,Docker,Shell

shell脚本的参数传递一例

2020-05-28  本文已影响0人  My熊猫眼

在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脚本吧,一定会有意外的收获哦。

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

上一篇下一篇

猜你喜欢

热点阅读