Есть ли способ использовать строку в качестве переключателя с помощью getopts?

Я смотрю, есть ли способ для getopts обрабатывать переключатели с помощью строки вместо символов.

Например, я хотел бы указать что-то вроде этого:

script.ksh -file1 file1.txt -file2.txt

Вместо:

script.ksh -f file1.txt -g file2.txt

Возможно ли это с unix getopts ?

1
задан Jon Lin 15 June 2012 в 16:49
поделиться

2 ответа

Нет, это невозможно с getopts . Вы должны выполнить свой собственный синтаксический анализ, например с переключателем корпуса :

while (($# > 0))
do
    case "$1" in
    -file1)
        shift
        file1=$1;;
    -file2)
        shift
        file2=$1;;
    esac
    shift
done
1
ответ дан 2 September 2019 в 22:24
поделиться

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

Из BashFAQ / 035 :

Никогда не используйте getopt (1). getopt не может обрабатывать пустые строки аргументов или аргументы со встроенными пробелами. Пожалуйста, забудьте, что он когда-либо существовал.

1
ответ дан 2 September 2019 в 22:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: