我试图让我的getops
函数运行多个标志和参数但不是短(-f
样式)标志,我想接受一个长标记{{1}风格)。例如:
--flag
我希望if [ $# -lt 1 ]; then
usage >&2
exit 1
else
while $1 "hf:" opt; do
case $opt in
h)
echo "Here is the help menu:"
usage
;;
f)
ls -l $OPTARG >&2
;;
\?)
echo "Invalid option: -$OPTARG" >&2
;;
:)
echo "Option -$OPTARG requires an argument" >&2
exit 1
;;
esac
done
fi
和-h
分别为-f
和--help
。
我该怎么做?
答案 0 :(得分:1)
getopt
会为您完成此操作。它处理短选项,长选项,带有和不带参数的选项,--
来结束选项解析等等。
Boilerplate用法如下:
options=$(getopt -o hf: -l help,file: -n "$0" -- "$@") || exit
eval set -- "$options"
while [[ $1 != -- ]]; do
case $1 in
-h|--help) echo "help!"; shift 1;;
-f|--file) echo "file! $2"; shift 2;;
*) echo "bad option: $1" >&2; exit 1;;
esac
done
shift
# Process non-option arguments.
for arg; do
echo "arg! $arg"
done