обработка споров с функцией удара

У меня есть сценарий удара, который инициируется с аргументами, у меня есть функция для обработки аргументов. Я помещаю аргументы в массив args=("$@"). и у меня есть функция, которая может проверить, содержит ли аргумент действительно определенные элементы.

containsElement () {
  local e
  for e in "${@:2}"; do [[ "$e" == "$1" ]] && { ipos="$i"; return 0; }
  done
  return 1
}

Я хотел улучшить свою функцию со способностью это; После нахождения аргумента проверьте следующие аргументы и посмотрите, содержат ли они числа до следующего не, числовой элемент в массиве найден, поместите их в массив, выбирают [1], выбирают [2]... Это лучше объяснено в примере;

sh script.sh plt 2 3 g40 All 32

затем я хочу функцию, дают мне

if containsElement "plt" "${args[@]}" ; then
containsElement "plt" "${args[@]}"
echo ${opt[@]}
fi

дайте мне

2 3 g40

Число является опциями для каждого аргумента. Я могу записать что-то, чтобы сделать это, но это обращается к ужасному коду, я хотел изучить хороший способ сделать это.

0
задан 6 October 2015 в 22:46

1 ответ

Я сделаю это с regexes, например:

echo plt 2 3 g40 All 32|perl -ne's/(\w+) ([\d ]+)(\w+)/print "$1$2$3\n"/egx;'

plt 2 3 g40
All 32

Не уверенный, если это - то, что Вы ищете? Можно опустить печатать первую строку для каждой группы параметра, с:

echo plt 2 3 g40 All 32|perl -ne's/(\w+) ([\d ]+)(\w+)/print "$2$3\n"/egx;'
0
ответ дан 7 October 2015 в 08:46
  • 1
    нет проблем... позже я восстановил тот раздел с " раздел MiniTool wizard" из окон..... – Jakaria Blaine 29 December 2016 в 06:53

Другие вопросы по тегам:

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