sh bash的命令行选项解析器模板
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sh bash的命令行选项解析器模板相关的知识,希望对你有一定的参考价值。
#!/bin/bash
PROGNAME=$(basename $0)
VERSION="1.0.0"
usage() {
echo "Usage: $PROGNAME [OPTIONS] [FILE]"
echo " This script is ~."
echo
echo "Options:"
echo " -h, --help"
echo " --version"
echo " -a, --long-a ARG"
echo " -b, --long-b [ARG]"
echo " -c, --check"
echo
exit 1
}
for OPT in "$@"
do
case "$OPT" in
'-h'|'--help' )
usage
exit 1
;;
'--version' )
echo $VERSION
exit 1
;;
'-a'|'--long-a' )
if [[ -z "$2" ]] || [[ "$2" =~ ^-+ ]]; then
echo "$PROGNAME: option requires an argument -- $1" 1>&2
exit 1
fi
ARG_A="$2"
shift 2
;;
'-b'|'--long-b' )
if [[ -z "$2" ]] || [[ "$2" =~ ^-+ ]]; then
shift
else
shift 2
fi
;;
'-c'|'--check' )
shift 1
;;
'--'|'-' )
shift 1
param+=( "$@" )
break
;;
-*)
echo "$PROGNAME: illegal option -- '$(echo $1 | sed 's/^-*//')'" 1>&2
exit 1
;;
*)
if [[ ! -z "$1" ]] && [[ ! "$1" =~ ^-+ ]]; then
#param=( ${param[@]} "$1" )
param+=( "$1" )
shift 1
fi
;;
esac
done
if [ -z $param ]; then
echo "$PROGNAME: too few arguments" 1>&2
echo "Try '$PROGNAME --help' for more information." 1>&2
exit 1
fi
for ((i=0; i<${#param[@]}; i++)); do
echo ${param[i]}
done
以上是关于sh bash的命令行选项解析器模板的主要内容,如果未能解决你的问题,请参考以下文章
ubuntu10.04 默认脚本解析器更改(./sdk.unpack: 2: source: not found)
在 Bash 中解析命令行参数的最佳方法是啥?
Bash Shell中命令行选项/参数处理
ArchLinux下Shell基础学习
sh 用于bash的模板getopts参数解析各种类型的参数。
sh 如何使用bash / getopt解析选项的示例