$# 是传给脚本的参数个数
$@ 是传给脚本的所有参数的列表
$* "$*" 把所有参数合并成一个字符串,而 "$@" 会得到一个字符串参数数组。
$0 是脚本本身的名字
$1是传递给该shell脚本的第一个参数
$2是传递给该shell脚本的第二个参数
${@: -1} 是传递给该shell脚本的最后一个参数
$? 命令后的返回值
getopts后面的字符串就是可使用的选项列表,每一个字母表明一个选项,后面带:的意味着选项除了定义自己以外,还会带上一个参数做为选项的值,好比d:在实际的使用中就会对应-d 30,选项的值就是30;getopts字符串中没有跟随:的是开关型选项,不须要再指定值,至关于true/false,只要带了这个参数就是true。若是命令行中包含了没有在getopts列表中的选项,会有警告信息,若是在整个getopts字符串前面也加上个:,就能消除警告信息了。 工具
使用getopts识别出各个选项以后,就能够配合case来进行相应的操做了。操做中有两个相对固定的“常量”,一个是OPTARG,用来取当前选项的值,另一个是OPTIND,表明当前选项在参数列表中的位移。注意case中的最后一个选择──?,表明这若是出现了不认识的选项,所进行的操做。
如果optstring是以冒号开头的,
命令行当中出现了optstring当中没有的参数将不会提示错误信息。
- while getopts :a:T:tc: opt; do
- case $opt in
- a)
- echo "got -a 参数 ${OPTARG}"
- ;;
- T)
- echo "got -T 参数 ${OPTARG}"
- ;;
- t)
- VAR ='yes' # 如果有这个参数就赋值
- ;;
- c)
- echo "got -C 参数 ${OPTARG}"
- ;;
- ?)
- echo "Invalid option: ${OPTARG}"
- ;;
- esac
- done
参考:
https://blog.csdn.net/weixin_51768320/article/details/123276073