Получение первого параметра командной строки неопции

Реализация Шаблона разработки в Java и AspectJ (Hannemann и Kiczales): http://www.cs.ubc.ca/labs/spl/papers/2002/oopsla02-patterns.pdf

бумага показывает, как некоторые шаблоны разработки GoF могут реализованный лучшим способом в Java с помощью AspectJ

6
задан user122147 25 September 2009 в 02:18
поделиться

3 ответа

Возможно, лучше использовать getopt .

Если вы хотите увидеть код сканирования аргументов в bash, способ без getopt:

realargs="$@"
while [ $# -gt 0 ]; do
    case "$1" in
      -x | -y | -z)
        echo recognized one argument option $1 with arg $2
        shift
        ;;
      -a | -b | -c)
        echo recognized zero argument option $1, no extra shift
        ;;
      *)
        saveme=$1
        break 2
        ;;
    esac
    shift
done
set -- $realargs
echo saved word: $saveme
echo run real command: "$@"
9
ответ дан 8 December 2019 в 17:24
поделиться

Невозможно выбрать какой-либо конкретный аргумент, не изучив всю командную строку. Причиной этого является базовое предположение bash о том, что любой параметр может появляться в любом порядке, независимо от относительного положения в командной строке. Другая предпосылка состоит в том, что любая опция, указанная на страницах руководства в кратком или длинном формате (например, «-f» или «--file»), будет иметь допустимое, признанное использование при выполнении команды.

Ваш Лучше всего использовать пример, предоставленный DigitalRoss, и либо закодировать значение для оператора case для каждой допустимой опции для команды, либо кодировать только те, с которыми вы хотите иметь дело в своем скрипте, и зафиксировать все остальное с помощью «*)» строить и игнорировать его, если он попадает под этот тест. Уловка заключается в том, что если конкретная опция имеет более одного действительного аргумента, вам нужно заранее знать, является ли различие между аргументами позиционным или сопоставлением с образцом на основе содержимого аргумента. Вам также потребуется использовать директиву skip для перехода от одного аргумента к другому для параметров с несколькими аргументами.

3
ответ дан 8 December 2019 в 17:24
поделиться

Вы, вероятно, захотите что-нибудь сделать с getopt (смотрите здесь или здесь , чтобы узнать, как использовать).

Возможно, сохраните всю командную строку (чтобы ее можно было передать в настоящий инструмент без изменений), затем обработайте аргументы с помощью getopt , возьмите необходимую информацию и запустите вспомогательный инструмент.

2
ответ дан 8 December 2019 в 17:24
поделиться