在linux shell中编写的脚本,在需要传参的时候,通常是在脚本后面用空格隔开各个参数,从而实现把参数传到脚本里面:
[root@public ~]# bash myscript.sh param1 param2 param3
在脚本中通过$1、$2、$3这样一个美元符号加数字获取参数
#!/bin/bash
echo "param1 is $param1" echo "param2 is $param2" echo "param3 is $param3"
可以看出,这种传参方式是强顺序相关的,当需要的参数多了之后,使用体验就会变的很糟糕。
可以使用getopts进行具名获取
#!/bin/bash while getopts ":sn:i:d:p:" opt; do case $opt in n) echo "选项-$opt的值是$OPTARG" ;; s) echo "选项-$opt" ;; d) echo "选项-$opt的值是$OPTARG" ;; i) echo "选项-$opt的值是$OPTARG" ;; p) echo "选项-$opt的值是$OPTARG" ;; :) echo "选项-$OPTARG后面需要一个参数值" exit 1 ;; ?) echo "无效的选项 -$OPTARG" exit 2 ;; esac done
注意getopts是shell内建命令,支持从单字符的传参,如-u parameter1,如果是-url parameter1则不支持。可以换用getopt。
-
« 上一篇:
Windows 10 降低内存占用