Я не знаю рубин очень хорошо, но я пытаюсь добавить некоторую функциональность к этому сценарию, который записал коллега.
В основном прямо сейчас это принимает несколько флагов и стандарта, как введено, и это использует OptionParser для парсинга флагов.
Я хочу использовать OptionParser для парсинга выбора параметров командной строки, подобных тем из кошки. Таким образом, я предполагаю, что мой вопрос состоит в том, как я записал бы параметры командной строки, анализирующие часть кошки в использовании рубина OptionParser
cat [OPTION]... [FILE]...
Надежда, которая имеет смысл, любая справка, ценится.
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 как массив имен файлов, предполагая, что пользователь вошел любой.