РЕДАКТИРОВАТЬ: пожалуйста, пожалуйста прочитайте два требования, перечисленные внизу этого сообщения, прежде чем отвечать. Люди продолжают публиковать свои новые драгоценные камни и библиотеки и многое другое, что явно не соответствует требованиям.
Иногда я хочу очень дешево взломать некоторые параметры командной строки в простой script. Увлекательный способ сделать это, не имея дело с getopts или синтаксическим разбором, или что-то в этом роде:
...
$quiet = ARGV.delete('-d')
$interactive = ARGV.delete('-i')
...
# Deal with ARGV as usual here, maybe using ARGF or whatever.
Это не совсем обычный синтаксис параметров Unix, потому что он будет принимать параметры параметров командной строки без параметров, как в "myprog -i foo bar -q
", но я могу жить с этим. (Некоторые люди, такие как разработчики Subversion, предпочитают это. Иногда я тоже.)
Опция, которая просто присутствует или отсутствует, не может быть реализована гораздо проще, чем предыдущая. (Одно назначение, один вызов функции, один побочный эффект.) Существует ли одинаковый простой способ справиться с параметрами, которые принимают параметр, например "-f
filename"?
EDIT:
Один момент, который я не делал раньше, потому что мне не стало ясно, пока автор Trollop не упомянул, что библиотека подходит "в одном [800-строчном] файле", это то, что я ищу не только для чистого синтаксиса, но для метода, который имеет следующие характеристики:
-
Весь код может быть включен в файл script (без подавления самого фактического script, который может быть только несколькими десятками строк), так что можно удалить один файл в
bin
в любой системе со стандартной версией Ruby 1.8. [5-7] и используйте ее. Если вы не можете написать Ruby script, у которого нет требуемых операторов, и где код для разбора нескольких параметров находится под дюжиной строк или около того, вы не выполняете это требование. -
Код небольшой и достаточно простой, чтобы его можно было запомнить достаточно, чтобы напрямую вводить код, который будет делать трюк, а не вырезать и вставлять из другого места. Подумайте о ситуации, когда вы находитесь на консоли межсетевого экрана без доступа к Интернету, и хотите скопировать быстрый script для использования клиентом. Я не знаю о вас, но (помимо того, что не удалось выполнить вышеописанное требование), запоминание даже 45 строк упрощенного микрооптикажа не является чем-то, что мне нужно делать.