Как использовать аргументы переменной с OptionParser рубина

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

В основном прямо сейчас это принимает несколько флагов и стандарта, как введено, и это использует OptionParser для парсинга флагов.

Я хочу использовать OptionParser для парсинга выбора параметров командной строки, подобных тем из кошки. Таким образом, я предполагаю, что мой вопрос состоит в том, как я записал бы параметры командной строки, анализирующие часть кошки в использовании рубина OptionParser

cat [OPTION]... [FILE]...

Надежда, которая имеет смысл, любая справка, ценится.

8
задан icco 2 March 2010 в 08:03
поделиться

1 ответ

OPTS = {}

op = OptionParser.new do |x|
    x.banner = 'cat <options> <file>'      
    x.separator ''

    x.on("-A", "--show-all", "Equivalent to -vET")               
        { OPTS[:showall] = true }      

    x.on("-b", "--number-nonblank", "number nonempty output lines") 
        { OPTS[:number_nonblank] = true }      

    x.on("-x", "--start-from NUM", Integer, "Start numbering from NUM")        
        { |n| OPTS[:start_num] = n }

    x.on("-h", "--help", "Show this message") 
        { puts op;  exit }

end

op.parse!(ARGV)

# Example code for dealing with filenames
ARGV.each{ |fn| output_file(OPTS, fn) }

Остальные операции командной строки, как говорится, оставлю в качестве упражнения для читателя! Вы уловили идею.

(NB: мне пришлось изобрести вымышленный параметр -x для демонстрации передачи значения после флага.)

Обновление: я должен был объяснить, что это оставит ARGV как массив имен файлов, предполагая, что пользователь вошел любой.

9
ответ дан 5 December 2019 в 18:58
поделиться
Другие вопросы по тегам:

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