码迷,mamicode.com
首页 > 系统相关 > 详细

Shell传参的多种方式

时间:2018-10-14 00:16:58      阅读:215      评论:0      收藏:0      [点我收藏+]

标签:选项   default   需要   参数   case   etop   class   命令   binary   

Shell 传参的多种方式

  1. 使用$1 $2 这种类似占位符的方式
# 命令行调用
start.sh 8080 9090
# 脚本中获取
port1=$1 # 8080
port2=$2 # 9090

可以看出来这种方式使用起来很简单,但灵活性太差,比如我只想传第二个参数,第一个使用默认值,这个就不行,所以就有第二种,指定参数传递

  1. 指定参数 getopts(shell内置命令)
#命令行调用
start.sh -a 8080 -b 9090    
# 脚本中获取
while getopts "d:b:h" arg #选项后面的冒号表示该选项需要参数
do
        case $arg in
             d)
                DEBUG=$OPTARG
                echo "debug: $OPTARG" #参数存在$OPTARG中
                ;;
             b)
                DEBUG_PORT=$OPTARG
                echo "DEBUG_PORT: $OPTARG"
                ;;
             h)
                echo "-d: debug enable,  true or false, default is false"
                echo "-b: debug port, default is 8000"
                echo "-p: web port ,default is 8080"
                exit 1
                ;;
             ?)  #当有不认识的选项的时候arg为?
            echo "unkonw argument"
        exit 1
        ;;
        esac
done

注意:这种参数名只能是一个字母(其它符号没验证过),参数名后面紧接着的内容会被当做value值

上面这种方式可以满足我们大多数的应用场景了,但是由于参数名的限制,如果参数太多,这种命令就不太直观,所以引申出第三种,长参数选项。

  1. 长参数选项 getopt (外部binary文件)

    暂未应用到。。。

Shell传参的多种方式

标签:选项   default   需要   参数   case   etop   class   命令   binary   

原文地址:https://www.cnblogs.com/yissheng/p/9784547.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!