Сайт | Скачать | Видео | Wiki

Автор Тема: getopt  (Прочитано 2154 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8635
  • Репутация: +187/-2
  • Автор темы
  • Старый чайник
getopt
« : 04 Март 2017, 17:39:10 »
У меня нет опыта использования getopts.
Потренируйтесь. Там ничего особо сложного нет.
Моноблок Lenovo IdeaCentre c200 (Intel Atom D525, Intel GMA 3150, 2 Gb RAM) Richy64
Nettop Acer Aspire Revo R3610 (Atom N330, nVidia GeForce 9400, 3 Gb RAM) Richy64

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8635
  • Репутация: +187/-2
  • Автор темы
  • Старый чайник
Re: getopt
« Ответ #1 : 04 Март 2017, 17:48:45 »
сделайте
Что и где?
Кстати в моём mkaufs самый простой вариант.
« Последнее редактирование: 04 Март 2017, 17:50:46 от DdShurick »
Моноблок Lenovo IdeaCentre c200 (Intel Atom D525, Intel GMA 3150, 2 Gb RAM) Richy64
Nettop Acer Aspire Revo R3610 (Atom N330, nVidia GeForce 9400, 3 Gb RAM) Richy64

Оффлайн betcher

  • Модератор
  • Ветеран
  • ****
  • Сообщений: 3019
  • Репутация: +35/-0
    • MagOS linux
Re: getopt
« Ответ #2 : 04 Март 2017, 17:52:55 »
сделайте
Весь сыр-бор только чтоб писать -dq вместо -d -q, остальное работает. Стоит ли? Парсер получится больше остального скрипта наверное :)

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8635
  • Репутация: +187/-2
  • Автор темы
  • Старый чайник
Re: getopt
« Ответ #3 : 04 Март 2017, 18:06:27 »
 Но учиться тоже надо.
Моноблок Lenovo IdeaCentre c200 (Intel Atom D525, Intel GMA 3150, 2 Gb RAM) Richy64
Nettop Acer Aspire Revo R3610 (Atom N330, nVidia GeForce 9400, 3 Gb RAM) Richy64

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33965
  • Репутация: +231/-0
    • PuppyRus-A
Re: getopt
« Ответ #4 : 04 Март 2017, 18:08:02 »
Если все просто - пусть Дядя Шурик сделает, а мы поучимся. "За базар" надо бы ответить  ;)

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8635
  • Репутация: +187/-2
  • Автор темы
  • Старый чайник
Re: getopt
« Ответ #5 : 04 Март 2017, 18:39:52 »
Дядя Шурик сделает
Без проблем, только надо точно знать что и где. Какие будут ключи? С какими аргументами? А то у вас какие-то "мечты виндусятника"
Вот образец, надо только буковки подставить:
Код
O=$(getopt -l help,root: -- hr: $@) || usage
eval set -- "$O"
for OPT in $O
do
case "$OPT" in
-h|--help) usage; break;;
-r|--root) AUFSROOT="$2"
shift 2;;
--) shift; break;;
esac
done
« Последнее редактирование: 04 Март 2017, 18:42:04 от DdShurick »
Моноблок Lenovo IdeaCentre c200 (Intel Atom D525, Intel GMA 3150, 2 Gb RAM) Richy64
Nettop Acer Aspire Revo R3610 (Atom N330, nVidia GeForce 9400, 3 Gb RAM) Richy64

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33965
  • Репутация: +231/-0
    • PuppyRus-A
Re: getopt
« Ответ #6 : 05 Март 2017, 10:47:22 »
https://rtfm.co.ua/bash-funkciya-getopts-ispolzuem-opcii-v-skriptax/

Из Вашего примера не ясно как сделать:
Код
script 1 2 -dq  3 -b 4
used key d
used key g
чтобы переставлять ключи в любом порядке

Оффлайн betcher

  • Модератор
  • Ветеран
  • ****
  • Сообщений: 3019
  • Репутация: +35/-0
    • MagOS linux
Re: getopt
« Ответ #7 : 05 Март 2017, 11:01:30 »
С getopt возможны грабли с -comp, там нужно передавать несколько параметров разделенных пробелом.
З.Ы. getopt и getopts не одно и тоже.

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33965
  • Репутация: +231/-0
    • PuppyRus-A
Re: getopt
« Ответ #8 : 05 Март 2017, 11:19:26 »
С getopt возможны грабли с -comp,
Я пока не предлагаю переделывать. Учимся

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8635
  • Репутация: +187/-2
  • Автор темы
  • Старый чайник
Re: getopt
« Ответ #9 : 05 Март 2017, 13:01:35 »
не ясно как сделать:
Код
O=$(getopt -l help -- dq:b: $@) || usage
eval set -- "$O"
for OPT in $O
do
case "$OPT" in
--help) usage; break;;
-b) KEY_B="$2"; shift 2;;
-d) KEY_D="DIR"; shift;;
-q) KEY_Q="$2"; shift 2;;
--) shift; break;;
esac
done
l (long) - длинный ключ, двоеточие после ключа обозначает ключ с аргументом. Вместо значения можно вписать действие (например -d) mkdir $SYSMNT/aufs1;; )

Моноблок Lenovo IdeaCentre c200 (Intel Atom D525, Intel GMA 3150, 2 Gb RAM) Richy64
Nettop Acer Aspire Revo R3610 (Atom N330, nVidia GeForce 9400, 3 Gb RAM) Richy64