В Unix, возможно ли дать getops диапазон значений, чтобы ожидать? - PullRequest
0 голосов
/ 22 октября 2010

Извините, если название сбивает с толку, но вот что я имею в виду:

Если у меня есть скрипт, который может принимать несколько параметров, я бы использовал команду getops для более простого управления действиями скрипта напараметры переданы.Однако, допустим, один из этих параметров может быть любым числом от 5 до 9 или любым другим.Есть ли способ сообщить getops, что любое число, переданное в качестве команды в сценарий от 5 до 9, следует воспринимать как одну пользовательскую команду?

Мой код до сих пор выглядит примерно так:

#!/bin/sh
args=`getopt -o abc: -- "$@"`
eval set -- "$args"
echo "After getopt"
for i in $args
do
 case "$i" in
    -c) shift;echo "flag c set to $1";shift;;
    -a) shift;echo "flag a set";;
    -b) shift;echo "flag b set";;
done

Я хочу посмотреть, смогу ли я сделать что-то вроде:

#!/bin/sh
args=`getopt -o ab[0-9]c: -- "$@"`
eval set -- "$args"
echo "After getopt"
for i in $args
do
 case "$i" in
    -c) shift;echo "flag c set to $1";shift;;
    -a) shift;echo "flag a set";;
    -b) shift;echo "flag b set";;
    -[0-9]) shift; echo $i;;
done

1 Ответ

0 голосов
/ 22 октября 2010

Нет, по крайней мере, не с тем, который я использую (у кого-то может быть улучшенный, но он нигде не будет стандартным).

Для этого конкретного случая, вероятно, можно использовать:

args=`getopt -o ab0123456789c: -- "$@"`

хотя для более крупных случаев это может быть громоздким.

Вы не думали рассматривать их как отдельные варианты?Другими словами, скажем, что они уровни отладки для процедуры регистрации.Почему вы не можете использовать:

args=`getopt -o abc:d: -- "$@"`

и указать их с progname -b -d4 вместо progname -b -4?

...