После регистрации его на 3 форумах и поиске везде... в конечном счете я попробовал следующее, и это работало...
testShell.sh -jvalue1 -evalue4 -- -Djvalue3 -pvalue2
Заметить
--
после -evalue4
И вывод был
j=value1
e=value4
remaining=-Djvalue3 -pvalue2
Я верю --
спрашивает getopts
прекратить обрабатывать опции.
попробуйте это:
$ ./testShell.sh -j value1 -e value4 -D jvalue3 -p value2
j=value1
e=value4
remaining=jvalue3 -p value2
Отметьте пробелы между опциями и строками опции.
help getopts
говорит:
OPTSTRING contains the option letters to be recognized; if a letter
is followed by a colon, the option is expected to have an argument,
which should be separated from it by white space.
т.е. пространство между опцией и любой строкой опции требуется.
При необходимости в больше, чем удар, встроенный getopt способен к,/usr/bin/getopt утилита поддерживает и долгие и короткие опции, с или без пробелов между строкой опции и опциями. также поддерживает дополнительные функции как дополнительная строка args.
BTW,/usr/bin/getopt доступен в пакете util-linux в debian и производных как человечность... dunno о других дистрибутивах, или *отклоняет, но источник будет доступен из архивов debian, если Вы не можете найти его больше нигде.
--
опция.спасибо.
– SiB
01.08.2012, 13:18
--
вот взлом, не фиксация. – cas 01.08.2012, 13:37