# 命令行调用 start.sh 8080 9090 # 脚本中获取 port1=$1 # 8080 port2=$2 # 9090
能够看出来这种方式使用起来很简单,但灵活性太差,好比我只想传第二个参数,第一个使用默认值,这个就不行,因此就有第二种,指定参数传递web
#命令行调用 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值shell
上面这种方式能够知足咱们大多数的应用场景了,可是因为参数名的限制,若是参数太多,这种命令就不太直观,因此引伸出第三种,长参数选项。命令行
长参数选项 getopt (外部binary文件)debug
暂未应用到。。。code