У меня есть командный скрипт, который я делаю, и мне интересно, как мне объединить несколько вариантов

общее использование команды выглядит следующим образом:

Использование: myCommand [-fpr] [-n count] [-s size] [-u user] [-d directory]

Мой вопрос относится к опции [-fpr]. Если пользователь вводит myCommand -fpr или myCommand -fp, как объединить / объединить параметры вместе, если он находится в цикле while?

while getopts "fpr" opt; do
    case $opt in
    f)
        echo `-l`
        echo "-f was triggered!" >&2
        ;;
    p)
            echo `-h`
        echo "-p was triggered!" >&2
        ;;
    r)
        echo "-r was triggered!" >&2
        ;;

    \?)
        echo "Invalid option: -$OPTARG\n" >&2
        usage
        ;;
    esac
done

1 ответ1

1

Если я правильно понимаю ваш вопрос, вы пытаетесь понять, как обрабатывать -fpr же, как -f -p -r . В этом случае getopts сделает это за вас.

Если вы хотите использовать "long option" -fpr и не угрожать ему, идентичным -f -p -r , вам нужно отказаться от getopts и посмотреть, например, на getopt (обратите внимание на отсутствие s в конце), который поддерживает длинные варианты. Смотрите, например, http://linux.die.net/man/1/getopt для деталей.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .