要添加选项,我的脚本之一中有以下内容:
parse_opts() {
while [ $# -gt 0 ]; do
case "$1" in
-h|--help)
help=1
shift
;;
-r|--raw)
raw=1
shift
;;
-c|--copy)
copy=1
shift
;;
-s|--sensitive)
sensitive=1
shift
;;
-i|--insensitive)
insensitive=1
shift
;;
*)
shift
;;
esac
done
}
只有一个问题,我不能同时使用多个选项。例如,using-r -s
有效,但 using-rs
无效。如何以编程方式使其工作而不添加单独的条目?我使用的 shell 是 sh。
编辑:我想出了怎么做。它是基于这个 stackoverflow 答案。我复制并粘贴了它,但将其替换为我需要的内容。
新代码:
while getopts hcsi-: OPT; do
# Support long options: https://stackoverflow.com/a/28466267/519360
if [ "$OPT" = "-" ]; then
OPT="${OPTARG%%=*}"
OPTARG="${OPTARG#$OPT}"
OPTARG="${OPTARG#=}"
fi
case "$OPT" in
h|help) help; exit 0 ;; # Call the `help´ function and exit.
c|copy) copy=1 ;;
s|sensitive) case_sensitivity="sensitive" ;;
i|insensitive) case_sensitivity="insensitive" ;;
??*) printf '%s\n' "Illegal option --$OPT" >&2; exit 2 ;;
?) exit 2 ;; # Error reported via `getopts´
esac
done
shift $((OPTIND-1)) # Remove option arguments from the argument list