## 检查参数并赋值 _assign() { if [ "$1" == "timeout" -o "$1" == "mirrors_count" ]; then if [[ "$2" =~ ^[[:digit:]]+$ ]]; then let $1=$2 else echo "$1 should be a number" exit 1 fi fi }
## 处理参数 while getopts ":t:p:h-:" optval do case "$optval" in t) _assign timeout ${OPTARG} ;; p) _assign mirrors_count ${OPTARG} ;; h) _usage ;; "-") echo "Unknown option: "--${OPTARG}"" >&2; _usage ;; ":") echo "Option "-${OPTARG}" requires an argument" >&2; _usage ;; "?") echo "Unknown option: "-${OPTARG}"" >&2; _usage ;; ## Should not occur *) echo "Unknown error while processing options" >&2; _usage ;; esac done shift $(expr ${OPTIND} - 1)