getflags(8) - Plan 9 from User Space

| GETFLAGS(8) | GETFLAGS(8)
| NAME
| getflags, usage – command-line parsing for shell scripts
SYNOPSIS
| `getflags $*
` `usage [ progname ]`
DESCRIPTION
| Getflags parses the options in its command-line arguments according to the environment variable `$flagfmt`. This variable should be a list of comma-separated options. Each option can be a single letter, indicating that it does not take arguments, or a letter followed by the space-separated names of its arguments. Getflags prints an rc(1) script on standard output which initializes the environment variable `$flag`x for every option mentioned in `$flagfmt`. If the option is not present on the command-line, the script sets that option’s flag variable to an empty list. Otherwise, the script sets that option’s flag variable with a list containing the option’s arguments or, if the option takes no arguments, with the string `1`. The script also sets the variable `$*` to the list of arguments following the options. The final line in the script sets the `$status` variable, to the empty string on success and to the string `usage` when there is an error parsing the command line.
Usage prints a usage message to standard error. It creates the message using `$flagfmt`, as described above, `$args`, which should contain the string to be printed explaining non-option arguments, and `$0`, the program name (see rc(1)). If run under sh(1), which does not set `$0`, the program name must be given explicitly on the command line.
EXAMPLE
| Parse the arguments for Plan 9’s leak(1):
| `flagfmt='b,s,f binary,r res,x width' args='name | pid list' if(! ifs=() eval `{getflags $*} || ~ $#* 0){
| usage exit usage
}`
SOURCE
| `/usr/lib/plan9/src/cmd/getflags.c /usr/lib/plan9/src/cmd/usage.c`
SEE ALSO
| arg(3)