tgetflags.8 - plan9port - [fork] Plan 9 from user space
 (HTM) git clone git://src.adamsgaard.dk/plan9port
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
       tgetflags.8 (1829B)
       ---
            1 .TH GETFLAGS 8
            2 .SH NAME
            3 getflags, usage \- command-line parsing for shell scripts
            4 .SH SYNOPSIS
            5 .B getflags $*
            6 .PP
            7 .B usage [ progname ]
            8 .SH DESCRIPTION
            9 .I Getflags
           10 parses the options in its command-line arguments
           11 according to the environment variable
           12 .BR $flagfmt .
           13 This variable should be a list of comma-separated options.
           14 Each option can be a single letter, indicating that it does
           15 not take arguments, or a letter followed by the space-separated
           16 names of its arguments.
           17 .I Getflags 
           18 prints an 
           19 .MR rc (1)
           20 script on standard output which initializes the
           21 environment variable
           22 .BI $flag x
           23 for every option mentioned in 
           24 .BR $flagfmt .
           25 If the option is not present on the command-line, the script
           26 sets that option's flag variable to an empty list.
           27 Otherwise, the script sets that option's flag variable with
           28 a list containing the option's arguments or, 
           29 if the option takes no arguments,
           30 with the string
           31 .BR 1 .
           32 The script also sets the variable
           33 .B $*
           34 to the list of arguments following the options.
           35 The final line in the script sets the
           36 .B $status
           37 variable, to the empty string on success
           38 and to the string
           39 .B usage
           40 when there is an error parsing the command line.
           41 .PP
           42 .I Usage
           43 prints a usage message to standard error.
           44 It creates the message using
           45 .BR $flagfmt ,
           46 as described above,
           47 .BR $args ,
           48 which should contain the string to be printed explaining
           49 non-option arguments,
           50 and
           51 .BR $0 ,
           52 the program name
           53 (see
           54 .MR rc (1) ).
           55 If run under 
           56 .MR sh (1) ,
           57 which does not set
           58 .BR $0 ,
           59 the program name must be given explicitly on the command line.
           60 .SH EXAMPLE
           61 Parse the arguments for Plan 9's
           62 .MR leak (1) :
           63 .IP
           64 .EX
           65 flagfmt='b,s,f binary,r res,x width'
           66 args='name | pid list'
           67 if(! ifs=() eval `{getflags $*} || ~ $#* 0){
           68         usage
           69         exit usage
           70 }
           71 .EE
           72 .SH SOURCE
           73 .B \*9/src/cmd/getflags.c
           74 .br
           75 .B \*9/src/cmd/usage.c
           76 .SH SEE ALSO
           77 .MR arg (3)