A simple and flexible command-line option parsing facility. Options may be either short one-character options of the form -X[ARGUMENT] or long multicharacter ones of the form -XXX[=ARGUMENT]. Short options may be coalesced. An argument of the form - stops option processing. For more information take a look at the SRFI-37 documentation 25.
An example:
#!/usr/local/bin/csi -script
;;;; secho - display command-line arguments
(define nl 1)
(define help
(option
'(#\h"help") #f #f
(lambda _
(print "Usage: secho [OPTION] ARG ...
-h --help show this text
-n --newline N add N newline characters (default: 1)\")
(exit) ) ) )
(define newlines
(option
'(#\n"newline") #t #f
(lambda (o n x vals)
(set! nl (string->number x))
vals) ) )
(for-each
(lambda (x) (print* x \#\space))
(reverse
(args-fold
(command-line-arguments)
(list help newlines)
(lambda (o n x vals)
(error "unrecognized option" n) )
cons
'() ) ) )
(display (make-string nl \#\newline))
25 http://srfi.schemers.org/srfi-37/srfi-37.html