(guile.info.gz) Command Line Args
Info Catalog
(guile.info.gz) Command Line Handling
(guile.info.gz) getopt-long
10.1 Using Command Line Arguments
=================================
When a Guile script is invoked, Guile makes the command line arguments
accessible via the procedure `command-line', which returns the
arguments as a list of strings.
For example, if the script
#! /usr/local/bin/guile -s
!#
(write (command-line))
(newline)
is saved in a file `cmdline-test.scm' and invoked using the command
line `./cmdline-test.scm bar.txt -o foo -frumple grob', the output is
("./cmdline-test.scm" "bar.txt" "-o" "foo" "-frumple" "grob")
If the script invocation includes a `-e' option, specifying a
procedure to call after loading the script, Guile will call that
procedure with `(command-line)' as its argument. So a script that uses
`-e' doesn't need to refer explicitly to `command-line' in its code.
For example, the script above would have identical behaviour if it was
written instead like this:
#! /usr/local/bin/guile \
-e main -s
!#
(define (main args)
(write args)
(newline))
(Note the use of the meta switch `\' so that the script invocation
can include more than one Guile option: The Meta Switch.)
These scripts use the `#!' POSIX convention so that they can be
executed using their own file names directly, as in the example command
line `./cmdline-test.scm bar.txt -o foo -frumple grob'. But they can
also be executed by typing out the implied Guile command line in full,
as in:
$ guile -s ./cmdline-test.scm bar.txt -o foo -frumple grob
or
$ guile -e main -s ./cmdline-test2.scm bar.txt -o foo -frumple grob
Even when a script is invoked using this longer form, the arguments
that the script receives are the same as if it had been invoked using
the short form. Guile ensures that the `(command-line)' or `-e'
arguments are independent of how the script is invoked, by stripping off
the arguments that Guile itself processes.
Info Catalog
(guile.info.gz) Command Line Handling
(guile.info.gz) getopt-long
automatically generated byinfo2html