shell脚本中使用getopts接收参数的使用方法

shell脚本中使用getopts接收参数的使用方法

QQ群:397745473

1
2
3
4
参考:
http://puremonkey2010.blogspot.com/2016/05/linux-bash-getopts.html

https://www.theunixschool.com/2012/08/getopts-how-to-pass-command-line-options-shell-script-Linux.html

命令行选项可以分为3种类型:

-不带参数的选项:

-带有参数的选项:

-选项+其他命令行参数:

getopts命令的语法为:

1
2
3
4
5
6
7
8
getopts optstring name

-> optstring-包含命令行中预期选项列表的字符串
->名称-变量名,用于一一读取命令行选项。

此命令中使用了环境变量:
* OPTARG:包含特定命令行选项的参数值。
* OPTIND:包含下一个命令行选项的索引。

案例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#!/bin/sh  
while getopts dm name
do
case $name in
d)dopt=1;;
m)mopt=1;;
*)echo "Invalid arg!";;
esac
done

DT=`date '+%d %b'`
if [[ ! -z $dopt ]]; then
echo "Date is: " ${DT/ */}
fi

if [[ ! -z $mopt ]]; then
echo "Month is: " ${DT/* /}
fi

shift $(($OPTIND - 1))

结果:

1
2
3
4
5
6
7
# ./disp.sh -d
Date is: 19
# ./disp.sh -d -m
Date is: 19
Month is: 5月
# ./disp.sh -m
Month is: 5月

上面这些基本够用,更多可以参考英文文档:

1
http://puremonkey2010.blogspot.com/2016/05/linux-bash-getopts.html

QQ群:397745473

知识星球