【shell笔记>参数解析】使用getopts解析长格式输入参数
这两天因为工作需求,需要写一些脚本,其中就涉及输入参数的解析,因为单个字符的选项-a
,-o
等等很难清楚地说明输入的参数,也不方面调试,所以在想怎么能够解析--
形式的选项,比如--input_file
,--output_file
。
关于单字符选项及参数的解析可以查阅笔记处理用户输入。
这里放下如何用getopts
解析长格式的输入参数方法:
#!/usr/bin/env bash
optspec=":hv-:"
while getopts "$optspec" optchar;
do
case "${optchar}" in
-)
case "${OPTARG}" in
loglevel)
val="${!OPTIND}";
OPTIND=$(( $OPTIND + 1 ))
echo "Parsing option: '--${OPTARG}', value: '${val}'" >&2;
;
;
loglevel=*)
val=${OPTARG#*=}
opt=${OPTARG%=$val}
echo "Parsing option: '--${opt}', value: '${val}'" >&2
;
;
*)
if [ "$OPTERR" = 1 ] && [ "${optspec:0:1}" != ":" ];
then
echo "Unknown option --${OPTARG}" >&2
fi
;
;
esac;
;
h)
echo "usage: $0 [-v] [--loglevel[=]]" >&2
exit 2
;
;
v)
echo "Parsing option: '-${optchar}'" >&2
;
;
*)
if [ "$OPTERR" != 1 ] || [ "${optspec:0:1}" = ":" ];
then
echo "Non-option argument: '-${OPTARG}'" >&2
fi
;
;
esac
done
注意
getopt
与getopts
的差异。【【shell笔记>参数解析】使用getopts解析长格式输入参数】来源:https://stackoverflow.com/questions/402377/using-getopts-in-bash-shell-script-to-get-long-and-short-command-line-options
推荐阅读
- 宽容谁
- 我要做大厨
- EffectiveObjective-C2.0|EffectiveObjective-C2.0 笔记 - 第二部分
- 增长黑客的海盗法则
- 画画吗()
- 2019-02-13——今天谈梦想()
- 远去的风筝
- Shell-Bash变量与运算符
- 三十年后的广场舞大爷
- 叙述作文