разделение аргументов скрипта bash на "=" - PullRequest
2 голосов
/ 04 ноября 2011

У меня есть скрипт bash, в котором вы можете указать параметры с помощью параметра --option:

if [ ${1:0:2} != '--' ] ; then 
    echo -e "Unrecognized option: $1\n$requestHelpMessage"; exit 1;
fi
if [ ! $2 ];
    then echo -e "Expected parameter for $1\n$requestHelpMessage"; exit 1;
fi
case ${1:2} in
    branch) # do something with $2 here
    batch) # do something with $2 here
    version) # do something with $2 here
    *) # you get the idea
esac

И я хочу расширить его, чтобы иметь возможность обрабатывать также параметр --option =. Есть ли простой способ разделить "=" без использования специального регистра?

Ответы [ 2 ]

3 голосов
/ 04 ноября 2011

Вместо того, чтобы использовать getopt или делать собственные настройки, попробуйте использовать " getopt "Он поддерживает как длинные (слово), так и короткие (символьные) аргументы.

Вот пример его использования:

get_inputs () {
    set -- $( getopt -u -l class:,desc:,force,host:,help,verbose "c:d:fh:v?" "$@" )

    while [ $# -gt 0 ]; do 
        case "$1" in
            -c|--class)
                CLASS=$2
                shift
                ;;
            -d|--desc)  
                DESCR=$2
                shift
                ;;
            -f|--force)
                FORCE=1
                ;;
            -h|--host)
                HOST=$2
                shift
                ;;
            -v|--verbose)
                VERBOSE=1
                ;;
            --help)
                usage
                exit
                ;;
            *)
                break
                ;;
        esac
        shift
    done
}
0 голосов
/ 04 ноября 2011

С небольшими изменениями вы можете достичь желаемого:

if [[ ! $1 =~ "^--?" ]] ; then 
    echo -e "Unrecognized option: $1\n$requestHelpMessage"; exit 1;

...

case $1 in
    -*branch) # do something with $2 here
    -*batch) # do something with $2 here
    -*version) # do something with $2 here
    *) # you get the idea
esac

В тестах допускается один или несколько - в начале $1

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...