Command-line argument parsing
Different Command-line argument parsing methods are used by different programming languages to parse command-line arguments.
Programming languages
C
C uses argv
to process command-line arguments.[1][2]
Java
An example of Java argument parsing would be:
public class Echo { public static void main (String[] args) { for (String s: args) { System.out.println(s); } } }
Perl
Perl uses $ARGV
.
PHP
PHP uses argc
as a count of arguments and argv
as an array containing the values of the arguments.[3][4] To create an array from command-line arguments in the -foo:bar
format, the following might be used:
$args = parseArgs( $argv ); echo getArg( $args, 'foo' ); function parseArgs( $args ) { foreach( $args as $arg ) { $tmp = explode( ':', $arg, 2 ); if( $arg[0] == "-" ) { $args[ substr( $tmp[0], 1 ) ] = $tmp[1]; } } return $args; } function getArg( $args, $arg ) { if( isset( $args[$arg] ) ) { return $args[$arg]; } return false; }
PHP can also use getopt()
.[5]
Python
Python uses sys.argv
, e.g.:
import sys for arg in sys.argv: print arg
Python also has a module called argparse
in the standard library for parsing command-line arguments.[6]
Racket
Racket uses a current-command-line-arguments
parameter, and provides a racket/cmdline
[7] library for parsing these arguments. Example:
#lang racket (require racket/cmdline) (define smile? #true) (define nose? #false) (define eyes ":") (command-line #:program "emoticon" #:once-any ; the following two are mutually exclusive [("-s" "--smile") "smile mode" (set! smile? #true)] [("-f" "--frown") "frown mode" (set! smile? #false)] #:once-each [("-n" "--nose") "add a nose" (set! nose? #true)] [("-e" "--eyes") char "use <char> for the eyes" (set! eyes char)]) (printf "~a~a~a\n" eyes (if nose? "-" "") (if smile? ")" "("))
The library parses long and short flags, handles arguments, allows combining short flags, and handles -h
and --help
automatically:
$ racket /tmp/c -nfe 8 8-(
References
- ↑ "The C Book — Arguments to main". Publications.gbdirect.co.uk. Retrieved 2010-05-31.
- ↑ http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/share/misc/style An example of parsing C arguments and options
- ↑ "PHP Manual". PHP. Retrieved 2010-05-31.
- ↑ wikibooks:PHP Programming/CLI
- ↑ http://php.net/getopt
- ↑ "argparse — Parser for command-line options, arguments and sub-commands". Python v2.7.2 documentation. Retrieved 7 March 2012.
- ↑ The Racket reference manual, Command-Line Parsing