쉘 스크립트에 짧은 매개변수를 추가하는 방법

쉘 스크립트에 짧은 매개변수를 추가하는 방법

옵션을 추가하기 위해 내 스크립트 중 하나에 다음이 있습니다.

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유효하지 않습니다. 별도의 항목을 추가하지 않고 프로그래밍 방식으로 작동하게 하려면 어떻게 해야 합니까? 내가 사용하는 쉘은 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

관련 정보