ref: a8f8de1cdeec7f9bee287c137b576e0249e8df82
dir: /sys/man/8/getflags/
.TH GETFLAGS 8 .SH NAME getflags, usage \- command-line parsing for shell scripts .SH SYNOPSIS .B aux/getflags $* .PP .B aux/usage .SH DESCRIPTION .I Getflags parses the options in its command-line arguments according to the environment variable .BR $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. .I Getflags prints an .IR rc (1) script on standard output which initializes the environment variable .BI $flag x for every option mentioned in .BR $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 .BR 1 . The script also sets the variable .B $* to the list of arguments following the options. The final line in the script sets the .B $status variable, to the empty string on success and to the string .B usage when there is an error parsing the command line. .PP .I Usage prints a usage message to standard error. It creates the message using .BR $flagfmt , as described above, .BR $args , which should contain the string to be printed explaining non-option arguments, and .BR $0 , the program name (see .IR rc (1)). .SH EXAMPLE Parse the arguments for .IR leak (1): .IP .EX flagfmt='b,s,f binary,r res,x width' args='name | pid list' if(! ifs=() eval `{aux/getflags $*} || ~ $#* 0){ aux/usage exit usage } .EE .SH SOURCE .B /sys/src/cmd/aux/getflags.c .br .B /sys/src/cmd/aux/usage.c .SH SEE ALSO .IR arg (2)