| 1 | .TH GETOPT 1 "May 31, 1997" Linux "" | 
1 | .TH GETOPT "1" "June 2012" "Linux" "User Commands" | 
| 2 | .SH NAME | 
2 | .SH NAME | 
| 3 | getopt \- parse command options (enhanced) | 
3 | getopt \- parse command options (enhanced) | 
| 4 | .SH SYNOPSIS | 
4 | .SH SYNOPSIS | 
 | 
 | 
5 | .BI getopt | 
| 5 | .BR getopt " optstring parameters" | 
6 | .I optstring parameters | 
| 6 |   | 
7 | .br | 
| 7 | .BR getopt " [options] [" \-\- "] optstring parameters" | 
8 | .B getopt | 
| 8 |   | 
9 | .RI [ options ] | 
| 9 | .BR getopt " [options] " \-o | \-\-options " optstring [options] [" \-\- "] parameters" | 
10 | .RB [ \-\- ] | 
 | 
 | 
11 | .I optstring parameters | 
 | 
 | 
12 | .br | 
 | 
 | 
13 | .B getopt | 
 | 
 | 
14 | .RI [ options ] | 
 | 
 | 
15 | .BR \-o | \-\-options | 
 | 
 | 
16 | .I optstring | 
 | 
 | 
17 | .RI [ options ] | 
 | 
 | 
18 | .RB [ \-\- ] | 
 | 
 | 
19 | .I parameters | 
| 10 | .SH DESCRIPTION | 
20 | .SH DESCRIPTION | 
| 11 | .B getopt | 
21 | .B getopt | 
| 12 | is used to break up  | 
22 | is used to break up | 
| 13 | .RI ( parse ) | 
23 | .RI ( parse ) | 
| 14 | options in command lines for easy parsing by | 
24 | options in command lines for easy parsing by shell procedures, and to | 
| 15 | shell procedures, and to check for legal options. | 
25 | check for legal options.  It uses the | 
| 16 | It uses the  | 
 | 
 | 
| 17 | .SM GNU | 
26 | .SM GNU | 
| 18 | .BR getopt (3)  | 
27 | .BR getopt (3) | 
| 19 | routines to do this. | 
28 | routines to do this. | 
| 20 |   | 
29 | .PP | 
| 21 | The parameters  | 
30 | The parameters | 
| 22 | .B getopt | 
31 | .B getopt | 
| 23 | is called with can be divided into two parts: options | 
32 | is called with can be divided into two parts: options which modify | 
| 24 | which modify the way getopt will parse | 
33 | the way | 
 | 
 | 
34 | .B getopt | 
 | 
 | 
35 | will do the parsing | 
| 25 | .RI ( options | 
36 | .RI "(the " options | 
| 26 | and | 
37 | and the | 
| 27 | .I \-o|\-\-options optstring | 
38 | .I optstring | 
| 28 | in the  | 
39 | in the | 
| 29 | .BR SYNOPSIS),  | 
40 | .BR SYNOPSIS ), | 
| 30 | and the parameters which are to be | 
41 | and the parameters which are to be parsed | 
| 31 | parsed | 
 | 
 | 
| 32 | .RI ( parameters | 
42 | .RI ( parameters | 
| 33 | in the  | 
43 | in the | 
| 34 | .BR SYNOPSIS). | 
44 | .BR SYNOPSIS ). | 
| 35 | The second part will start at the first non\-option parameter | 
45 | The second part will start at the first non\-option parameter that is | 
| 36 | that is not an option argument, or after the first occurrence of  | 
46 | not an option argument, or after the first occurrence of | 
| 37 | .RB ` \-\- '. | 
47 | .RB ' \-\- '. | 
| 38 | If no  | 
48 | If no | 
| 39 | .RB ` \-o '  | 
49 | .RB ' \-o ' | 
| 40 | or  | 
50 | or | 
| 41 | .RB ` \-\-options '  | 
51 | .RB ' \-\-options ' | 
| 42 | option is found in the first part, the first | 
52 | option is found in the first part, the first parameter of the second | 
| 43 | parameter of the second part is used as the short options string. | 
53 | part is used as the short options string. | 
| 44 |   | 
54 | .PP | 
| 45 | If the environment variable | 
55 | If the environment variable | 
| 46 | .B GETOPT_COMPATIBLE | 
56 | .B GETOPT_COMPATIBLE | 
| 47 | is set, or if its first parameter  | 
57 | is set, or if the first \fIparameter\fR is not an option (does not start | 
| 48 | is not an option (does not start with a | 
58 | with a | 
| 49 | .RB ` \- ', | 
59 | .RB ' \- ', | 
| 50 | this is the first format in the  | 
60 | the first format in the | 
| 51 | .BR SYNOPSIS), | 
61 | .BR SYNOPSIS ), | 
| 52 | .B getopt | 
62 | .B getopt | 
| 53 | will generate output that is compatible with that of other versions of  | 
63 | will generate output that is compatible with that of other versions of | 
| 54 | .BR getopt (1).  | 
64 | .BR getopt (1). | 
| 55 | It will still do parameter shuffling and recognize optional | 
65 | It will still do parameter shuffling and recognize optional arguments | 
| 56 | arguments (see section | 
66 | (see section | 
| 57 | .B COMPATIBILITY | 
67 | .B COMPATIBILITY | 
| 58 | for more information).  | 
68 | for more information). | 
| 59 |   | 
69 | .PP | 
| 60 | Traditional implementations of | 
70 | Traditional implementations of | 
| 61 | .BR getopt (1) | 
71 | .BR getopt (1) | 
| 62 | are unable to cope with whitespace and other (shell\-specific) special characters | 
72 | are unable to cope with whitespace and other (shell\-specific) | 
| 63 | in arguments and non\-option parameters. To solve this problem, this  | 
73 | special characters in arguments and non\-option parameters.  To solve | 
| 64 | implementation can generate | 
74 | this problem, this implementation can generate quoted output which | 
| 65 | quoted output which must once again be interpreted by the shell (usually | 
75 | must once again be interpreted by the shell (usually by using the | 
| 66 | by using the | 
 | 
 | 
| 67 | .B eval | 
76 | .B eval | 
| 68 | command). This has the effect of preserving those characters, but | 
77 | command).  This has the effect of preserving those characters, but | 
| 69 | you must call  | 
78 | you must call | 
| 70 | .B getopt | 
79 | .B getopt | 
| 71 | in a way that is no longer compatible with other versions (the second  | 
80 | in a way that is no longer compatible with other versions (the second | 
| 72 | or third format in the  | 
81 | or third format in the | 
| 73 | .BR SYNOPSIS).  | 
82 | .BR SYNOPSIS ). | 
| 74 | To determine whether this enhanced version of | 
83 | To determine whether this enhanced version of | 
| 75 | .BR getopt (1) | 
84 | .BR getopt (1) | 
| 76 | is installed, a special test option | 
85 | is installed, a special test option | 
| 77 | .RB ( \-T )  | 
86 | .RB ( \-T ) | 
| 78 | can be used. | 
87 | can be used. | 
| 79 | .SH OPTIONS | 
88 | .SH OPTIONS | 
 | 
 | 
89 | .TP | 
| 80 | .IP "\-a, \-\-alternative" | 
90 | .BR \-a , " \-\-alternative" | 
| 81 | Allow long options to start with a single  | 
91 | Allow long options to start with a single | 
| 82 | .RB ` \- '. | 
92 | .RB ' \- '. | 
 | 
 | 
93 | .TP | 
| 83 | .IP "\-h, \-\-help" | 
94 | .BR \-h , " \-\-help" | 
| 84 | Output a small usage guide and exit succesfully. No other output is generated.  | 
95 | Display help text and exit.  No other output is generated. | 
 | 
 | 
96 | .TP | 
| 85 | .IP "\-l, \-\-longoptions longopts" | 
97 | .BR \-l , " \-\-longoptions \fIlongopts\fP" | 
| 86 | The long (multi\-character) options to be recognized.  | 
98 | The long (multi\-character) options to be recognized.  More than one | 
| 87 | More than one option name | 
 | 
 | 
| 88 | may be specified at once, by separating the names with commas. This option  | 
99 | option name may be specified at once, by separating the names with | 
| 89 | may be given more than once, the  | 
100 | commas.  This option may be given more than once, the | 
| 90 | .I longopts  | 
101 | .I longopts | 
| 91 | are cumulative. | 
102 | are cumulative.  Each long option name in | 
| 92 | Each long option name | 
 | 
 | 
| 93 | in  | 
 | 
 | 
| 94 | .I longopts  | 
103 | .I longopts | 
| 95 | may be followed by one colon to indicate it has a required argument,and by two colons to indicate it has an optional argument. | 
 | 
 | 
| 96 | .IP "\-n, \-\-name progname" | 
 | 
 | 
| 97 | The name that will be used by the  | 
 | 
 | 
| 98 | .BR getopt (3) | 
 | 
 | 
| 99 | routines when it reports errors. Note that errors of | 
 | 
 | 
| 100 | .BR getopt (1) | 
 | 
 | 
| 101 | are still reported as coming from getopt. | 
 | 
 | 
| 102 | .IP "\-o, \-\-options shortopts" | 
 | 
 | 
| 103 | The short (one\-character) options to be recognized. If this option is not | 
 | 
 | 
| 104 | found, the first parameter of  | 
 | 
 | 
| 105 | .B getopt  | 
 | 
 | 
| 106 | that does not start with | 
 | 
 | 
| 107 | a  | 
 | 
 | 
| 108 | .RB ` \- '  | 
 | 
 | 
| 109 | (and is not an option argument) is used as the short options string. | 
 | 
 | 
| 110 | Each short option character | 
 | 
 | 
| 111 | in  | 
 | 
 | 
| 112 | .I shortopts  | 
 | 
 | 
| 113 | may be followed by one colon to indicate it has a required argument, | 
104 | may be followed by one colon to indicate it has a required argument, | 
| 114 | and by two colons to indicate it has an optional argument. | 
105 | and by two colons to indicate it has an optional argument. | 
 | 
 | 
106 | .TP | 
 | 
 | 
107 | .BR \-n , " \-\-name \fIprogname\fP" | 
 | 
 | 
108 | The name that will be used by the | 
 | 
 | 
109 | .BR getopt (3) | 
 | 
 | 
110 | routines when it reports errors.  Note that errors of | 
 | 
 | 
111 | .BR getopt (1) | 
 | 
 | 
112 | are still reported as coming from getopt. | 
 | 
 | 
113 | .TP | 
 | 
 | 
114 | .BR \-o , " \-\-options \fIshortopts\fP" | 
 | 
 | 
115 | The short (one\-character) options to be recognized.  If this option | 
 | 
 | 
116 | is not found, the first parameter of | 
 | 
 | 
117 | .B getopt | 
 | 
 | 
118 | that does not start with a | 
 | 
 | 
119 | .RB ' \- ' | 
 | 
 | 
120 | (and is not an option argument) is used as the short options string. | 
 | 
 | 
121 | Each short option character in | 
 | 
 | 
122 | .I shortopts | 
 | 
 | 
123 | may be followed by one colon to indicate it has a required argument, | 
 | 
 | 
124 | and by two colons to indicate it has an optional argument.  The first | 
| 115 | The first character of shortopts may be  | 
125 | character of shortopts may be | 
| 116 | .RB ` + '  | 
126 | .RB ' + ' | 
| 117 | or | 
127 | or | 
| 118 | .RB ` \- '  | 
128 | .RB ' \- ' | 
| 119 | to influence the way | 
 | 
 | 
| 120 | options are parsed and output is generated (see section  | 
129 | to influence the way options are parsed and output is generated (see | 
 | 
 | 
130 | section | 
| 121 | .B SCANNING MODES | 
131 | .B SCANNING MODES | 
| 122 | for details). | 
132 | for details). | 
 | 
 | 
133 | .TP | 
| 123 | .IP "\-q, \-\-quiet" | 
134 | .BR \-q , " \-\-quiet" | 
| 124 | Disable error reporting by getopt(3). | 
135 | Disable error reporting by getopt(3). | 
 | 
 | 
136 | .TP | 
| 125 | .IP "\-Q, \-\-quiet\-output" | 
137 | .BR  \-Q , " \-\-quiet\-output" | 
| 126 | Do not generate normal output. Errors are still reported by | 
138 | Do not generate normal output.  Errors are still reported by | 
| 127 | .BR getopt (3),  | 
139 | .BR getopt (3), | 
| 128 | unless you also use  | 
140 | unless you also use | 
| 129 | .IR \-q . | 
141 | .BR \-q . | 
| 130 | .IP "\-s, \-\-shell shell" | 
142 | .TP | 
| 131 | Set quoting conventions to those of shell. If no \-s argument is found, | 
143 | .BR \-s , " \-\-shell \fIshell\fP" | 
| 132 | the | 
144 | Set quoting conventions to those of \fIshell\fR. | 
 | 
 | 
145 | If the \fB\-s\fR option is not given, the | 
| 133 | .SM BASH | 
146 | .SM BASH | 
| 134 | conventions are used. Valid arguments are currently | 
147 | conventions are used.  Valid arguments are currently | 
| 135 | .RB ` sh ' | 
148 | .RB ' sh ' | 
| 136 | .RB ` bash ', | 
149 | .RB ' bash ', | 
| 137 | .RB ` csh ', | 
150 | .RB ' csh ', | 
| 138 | and | 
151 | and | 
| 139 | .RB ` tcsh '. | 
152 | .RB ' tcsh '. | 
 | 
 | 
153 | .TP | 
| 140 | .IP "\-u, \-\-unquoted" | 
154 | .BR \-u , " \-\-unquoted" | 
| 141 | Do not quote the output. Note that whitespace and special (shell\-dependent) | 
155 | Do not quote the output.  Note that whitespace and special | 
| 142 | characters can cause havoc in this mode (like they do with other | 
156 | (shell\-dependent) characters can cause havoc in this mode (like they | 
 | 
 | 
157 | do with other | 
| 143 | .BR getopt (1) | 
158 | .BR getopt (1) | 
| 144 | implementations). | 
159 | implementations). | 
| 145 | .IP "\-T \-\-test" | 
160 | .TP | 
 | 
 | 
161 | .BR \-T , " \-\-test" | 
| 146 | Test if your  | 
162 | Test if your | 
| 147 | .BR getopt (1)  | 
163 | .BR getopt (1) | 
| 148 | is this enhanced version or an old version. This generates no output,  | 
164 | is this enhanced version or an old version.  This generates no | 
| 149 | and sets the error status to 4. Other implementations of  | 
165 | output, and sets the error status to 4.  Other implementations of | 
| 150 | .BR getopt (1), | 
166 | .BR getopt (1), | 
| 151 | and this version if the environment variable | 
167 | and this version if the environment variable | 
| 152 | .B GETOPT_COMPATIBLE | 
168 | .B GETOPT_COMPATIBLE | 
| 153 | is set, | 
169 | is set, will return | 
| 154 | will return  | 
 | 
 | 
| 155 | .RB ` \-\- '  | 
170 | .RB ' \-\- ' | 
| 156 | and error status 0. | 
171 | and error status 0. | 
 | 
 | 
172 | .TP | 
| 157 | .IP "\-V, \-\-version" | 
173 | .BR \-V , " \-\-version" | 
| 158 | Output version information and exit succesfully. No other output is generated.  | 
174 | Display version information and exit.  No other output is generated. | 
| 159 | .SH PARSING | 
175 | .SH PARSING | 
| 160 | This section specifies the format of the second part of the parameters of | 
176 | This section specifies the format of the second part of the | 
 | 
 | 
177 | parameters of | 
| 161 | .B getopt | 
178 | .B getopt | 
| 162 | (the  | 
179 | (the | 
| 163 | .I parameters  | 
180 | .I parameters | 
| 164 | in the  | 
181 | in the | 
| 165 | .BR SYNOPSIS ).  | 
182 | .BR SYNOPSIS ). | 
| 166 | The next section  | 
183 | The next section | 
| 167 | .RB ( OUTPUT )  | 
184 | .RB ( OUTPUT ) | 
| 168 | describes the output that is  | 
185 | describes the output that is generated.  These parameters were | 
| 169 | generated. These parameters were typically the parameters a shell function | 
186 | typically the parameters a shell function was called with.  Care must | 
| 170 | was called with.  | 
 | 
 | 
| 171 | Care must be taken that each parameter the shell function was | 
187 | be taken that each parameter the shell function was called with | 
| 172 | called with corresponds to exactly one parameter in the parameter list of | 
188 | corresponds to exactly one parameter in the parameter list of | 
| 173 | .B getopt  | 
189 | .B getopt | 
| 174 | (see the  | 
190 | (see the | 
| 175 | .BR EXAMPLES ).  | 
191 | .BR EXAMPLES ). | 
| 176 | All parsing is done by the GNU  | 
192 | All parsing is done by the GNU | 
| 177 | .BR getopt (3)  | 
193 | .BR getopt (3) | 
| 178 | routines.  | 
194 | routines. | 
| 179 |   | 
195 | .PP | 
| 180 | The parameters are parsed from left to right. Each parameter is classified as a | 
196 | The parameters are parsed from left to right.  Each parameter is | 
| 181 | short option, a long option, an argument to an option, | 
197 | classified as a short option, a long option, an argument to an | 
| 182 | or a non\-option parameter. | 
198 | option, or a non\-option parameter. | 
| 183 |   | 
199 | .PP | 
| 184 | A simple short option is a  | 
200 | A simple short option is a | 
| 185 | .RB ` \- '  | 
201 | .RB ' \- ' | 
| 186 | followed by a short option character. If | 
202 | followed by a short option character.  If the option has a required | 
| 187 | the option has a required argument, it may be written directly after the option | 
203 | argument, it may be written directly after the option character or as | 
| 188 | character or as the next parameter (ie. separated by whitespace on the  | 
204 | the next parameter (i.e. separated by whitespace on the command | 
| 189 | command line). If the | 
 | 
 | 
| 190 | option has an optional argument, it must be written directly after the | 
205 | line).  If the option has an optional argument, it must be written | 
| 191 | option character if present. | 
206 | directly after the option character if present. | 
| 192 |   | 
207 | .PP | 
| 193 | It is possible to specify several short options after one  | 
208 | It is possible to specify several short options after one | 
| 194 | .RB ` \- ',  | 
209 | .RB ' \- ', | 
| 195 | as long as all (except possibly the last) do not have required or optional | 
210 | as long as all (except possibly the last) do not have required or | 
| 196 | arguments. | 
211 | optional arguments. | 
| 197 |   | 
212 | .PP | 
| 198 | A long option normally begins with  | 
213 | A long option normally begins with | 
| 199 | .RB ` \-\- '  | 
214 | .RB ' \-\- ' | 
| 200 | followed by the long option name. | 
215 | followed by the long option name.  If the option has a required | 
| 201 | If the option has a required argument, it may be written directly after | 
216 | argument, it may be written directly after the long option name, | 
| 202 | the long option name, separated by  | 
217 | separated by | 
| 203 | .RB ` = ',  | 
218 | .RB ' = ', | 
| 204 | or as the next argument (ie. separated by whitespace on the command line).  | 
219 | or as the next argument (i.e. separated by whitespace on the command | 
| 205 | If the option has an optional argument, it must | 
220 | line).  If the option has an optional argument, it must be written | 
| 206 | be written directly after the long option name, separated by  | 
221 | directly after the long option name, separated by | 
| 207 | .RB ` = ',  | 
222 | .RB ' = ', | 
| 208 | if present (if you add the  | 
223 | if present (if you add the | 
| 209 | .RB ` = '  | 
224 | .RB ' = ' | 
| 210 | but nothing behind it, it is interpreted | 
225 | but nothing behind it, it is interpreted as if no argument was | 
| 211 | as if no argument was present; this is a slight bug, see the  | 
226 | present; this is a slight bug, see the | 
| 212 | .BR BUGS ). | 
227 | .BR BUGS ). | 
| 213 | Long options may be abbreviated, as long as the abbreviation is not | 
228 | Long options may be abbreviated, as long as the abbreviation is not | 
| 214 | ambiguous. | 
229 | ambiguous. | 
| 215 |   | 
230 | .PP | 
| 216 | Each parameter not starting with a  | 
231 | Each parameter not starting with a | 
| 217 | .RB ` \- ',  | 
232 | .RB ' \- ', | 
| 218 | and not a required argument of | 
233 | and not a required argument of a previous option, is a non\-option | 
| 219 | a previous option, is a non\-option parameter. Each parameter after | 
234 | parameter.  Each parameter after a | 
| 220 | a  | 
 | 
 | 
| 221 | .RB ` \-\- '  | 
235 | .RB ' \-\- ' | 
| 222 | parameter is always interpreted as a non\-option parameter. | 
236 | parameter is always interpreted as a non\-option parameter.  If the | 
| 223 | If the environment variable  | 
237 | environment variable | 
| 224 | .B POSIXLY_CORRECT  | 
238 | .B POSIXLY_CORRECT | 
| 225 | is set, or if the short | 
239 | is set, or if the short option string started with a | 
| 226 | option string started with a  | 
 | 
 | 
| 227 | .RB ` + ',  | 
240 | .RB ' + ', | 
| 228 | all remaining parameters are interpreted | 
241 | all remaining parameters are interpreted as non\-option parameters as | 
| 229 | as non\-option parameters as soon as the first non\-option parameter is | 
242 | soon as the first non\-option parameter is found. | 
| 230 | found. | 
 | 
 | 
| 231 | .SH OUTPUT | 
243 | .SH OUTPUT | 
| 232 | Output is generated for each element described in the previous section.  | 
244 | Output is generated for each element described in the previous | 
| 233 | Output is done | 
245 | section.  Output is done in the same order as the elements are | 
| 234 | in the same order as the elements are specified in the input, except | 
246 | specified in the input, except for non\-option parameters.  Output | 
| 235 | for non\-option parameters. Output can be done in  | 
247 | can be done in | 
| 236 | .I compatible  | 
248 | .I compatible | 
| 237 | .RI ( unquoted ) | 
249 | .RI ( unquoted ) | 
| 238 | mode, or in such way that whitespace and other special characters within | 
250 | mode, or in such way that whitespace and other special characters | 
| 239 | arguments and non\-option parameters are preserved (see  | 
251 | within arguments and non\-option parameters are preserved (see | 
| 240 | .BR QUOTING ). | 
252 | .BR QUOTING ). | 
| 241 | When the output is processed in the shell script, it will seem to be | 
253 | When the output is processed in the shell script, it will seem to be | 
| 242 | composed of distinct elements that can be processed one by one (by using the | 
254 | composed of distinct elements that can be processed one by one (by | 
| 243 | shift command in most shell languages). This is imperfect in unquoted mode, | 
255 | using the shift command in most shell languages).  This is imperfect | 
| 244 | as elements can be split at unexpected places if they contain whitespace | 
256 | in unquoted mode, as elements can be split at unexpected places if | 
| 245 | or special characters. | 
257 | they contain whitespace or special characters. | 
| 246 |   | 
258 | .PP | 
| 247 | If there are problems parsing the parameters, for example because a | 
259 | If there are problems parsing the parameters, for example because a | 
| 248 | required argument is not found or an option is not recognized, an error | 
260 | required argument is not found or an option is not recognized, an | 
| 249 | will be reported on stderr, there will be no output for the offending | 
261 | error will be reported on stderr, there will be no output for the | 
| 250 | element, and a non\-zero error status is returned. | 
262 | offending element, and a non\-zero error status is returned. | 
| 251 |   | 
263 | .PP | 
| 252 | For a short option, a single  | 
264 | For a short option, a single | 
| 253 | .RB ` \- '  | 
265 | .RB ' \- ' | 
| 254 | and the option character are generated | 
266 | and the option character are generated as one parameter.  If the | 
| 255 | as one parameter. If the option has an argument, the next | 
267 | option has an argument, the next parameter will be the argument.  If | 
| 256 | parameter will be the argument. If the option takes an optional argument, | 
268 | the option takes an optional argument, but none was found, the next | 
| 257 | but none was found, the next parameter will be generated but be empty in | 
269 | parameter will be generated but be empty in quoting mode, but no | 
| 258 | quoting mode, | 
 | 
 | 
| 259 | but no second parameter will be generated in unquoted (compatible) mode. | 
270 | second parameter will be generated in unquoted (compatible) mode. | 
| 260 | Note that many other  | 
271 | Note that many other | 
| 261 | .BR getopt (1)  | 
272 | .BR getopt (1) | 
| 262 | implemetations do not support optional arguments. | 
273 | implementations do not support optional arguments. | 
| 263 |   | 
274 | .PP | 
| 264 | If several short options were specified after a single  | 
275 | If several short options were specified after a single | 
| 265 | .RB ` \- ',  | 
276 | .RB ' \- ', | 
| 266 | each will be present in the output as a separate parameter. | 
277 | each will be present in the output as a separate parameter. | 
| 267 |   | 
278 | .PP | 
| 268 | For a long option,  | 
279 | For a long option, | 
| 269 | .RB ` \-\- '  | 
280 | .RB ' \-\- ' | 
| 270 | and the full option name are generated as one | 
281 | and the full option name are generated as one parameter.  This is | 
| 271 | parameter. This is done regardless whether the option was abbreviated or | 
282 | done regardless whether the option was abbreviated or specified with | 
| 272 | specified with a single  | 
283 | a single | 
| 273 | .RB ` \- '  | 
284 | .RB ' \- ' | 
| 274 | in the input. Arguments are handled as with short options. | 
285 | in the input.  Arguments are handled as with short options. | 
| 275 |   | 
286 | .PP | 
| 276 | Normally, no non\-option parameters output is generated until all options | 
287 | Normally, no non\-option parameters output is generated until all | 
| 277 | and their arguments have been generated. Then  | 
288 | options and their arguments have been generated.  Then | 
| 278 | .RB ` \-\- '  | 
289 | .RB ' \-\- ' | 
| 279 | is generated as a | 
290 | is generated as a single parameter, and after it the non\-option | 
| 280 | single parameter, and after it the non\-option parameters in the order | 
291 | parameters in the order they were found, each as a separate | 
| 281 | they were found, each as a separate parameter. | 
 | 
 | 
| 282 | Only if the first character of the short options string was a  | 
292 | parameter.  Only if the first character of the short options string | 
 | 
 | 
293 | was a | 
| 283 | .RB ` \- ', | 
294 | .RB ' \- ', | 
| 284 | non\-option parameter output is generated at the place they are found in the  | 
295 | non\-option parameter output is generated at the place they are found | 
| 285 | input (this is not supported if the first format of the  | 
296 | in the input (this is not supported if the first format of the | 
| 286 | .B SYNOPSIS | 
297 | .B SYNOPSIS | 
| 287 | is used; in that case all preceding occurrences of | 
298 | is used; in that case all preceding occurrences of | 
| 288 | .RB ` \- ' | 
299 | .RB ' \- ' | 
| 289 | and  | 
300 | and | 
| 290 | .RB ` + ' | 
301 | .RB ' + ' | 
| 291 | are ignored).  | 
302 | are ignored). | 
| 292 | .SH QUOTING | 
303 | .SH QUOTING | 
| 293 | In compatible mode, whitespace or 'special' characters in arguments or | 
304 | In compatible mode, whitespace or 'special' characters in arguments | 
| 294 | non\-option parameters are not handled correctly. As the output is  | 
305 | or non\-option parameters are not handled correctly.  As the output | 
| 295 | fed to the shell script, the script does not know how it is supposed to break  | 
306 | is fed to the shell script, the script does not know how it is | 
| 296 | the output into separate parameters.  To circumvent this | 
307 | supposed to break the output into separate parameters.  To circumvent | 
| 297 | problem, this implementation offers quoting. The idea is that output | 
308 | this problem, this implementation offers quoting.  The idea is that | 
| 298 | is generated with quotes around each parameter. When this output is once | 
309 | output is generated with quotes around each parameter.  When this | 
| 299 | again fed to the shell (usually by a shell  | 
310 | output is once again fed to the shell (usually by a shell | 
| 300 | .B eval  | 
311 | .B eval | 
| 301 | command), it is split correctly into separate parameters. | 
312 | command), it is split correctly into separate parameters. | 
| 302 |   | 
313 | .PP | 
| 303 | Quoting is not enabled if the environment variable | 
314 | Quoting is not enabled if the environment variable | 
| 304 | .B GETOPT_COMPATIBLE | 
315 | .B GETOPT_COMPATIBLE | 
| 305 | is set, if the first form of the | 
316 | is set, if the first form of the | 
| 306 | .B SYNOPSIS | 
317 | .B SYNOPSIS | 
| 307 | is used, or if the option | 
318 | is used, or if the option | 
| 308 | .RB ` \-u ' | 
319 | .RB ' \-u ' | 
| 309 | is found. | 
320 | is found. | 
| 310 |   | 
321 | .PP | 
| 311 | Different shells use different quoting conventions. You can use the  | 
322 | Different shells use different quoting conventions.  You can use the | 
| 312 | .RB ` \-s ' | 
323 | .RB ' \-s ' | 
| 313 | option to select the shell you are using. The following shells are | 
324 | option to select the shell you are using.  The following shells are | 
| 314 | currently supported: | 
325 | currently supported: | 
| 315 | .RB ` sh ', | 
326 | .RB ' sh ', | 
| 316 | .RB ` bash ', | 
327 | .RB ' bash ', | 
| 317 | .RB ` csh '  | 
328 | .RB ' csh ' | 
| 318 | and | 
329 | and | 
| 319 | .RB ` tcsh '. | 
330 | .RB ' tcsh '. | 
| 320 | Actually, only two `flavors' are distinguished: sh\-like quoting conventions  | 
331 | Actually, only two 'flavors' are distinguished: sh\-like quoting | 
| 321 | and csh\-like quoting conventions. Chances are that if you use another shell | 
332 | conventions and csh\-like quoting conventions.  Chances are that if | 
| 322 | script language, one of these flavors can still be used. | 
333 | you use another shell script language, one of these flavors can still | 
| 323 |   | 
334 | be used. | 
| 324 | .SH "SCANNING MODES" | 
335 | .SH "SCANNING MODES" | 
| 325 | The first character of the short options string may be a | 
336 | The first character of the short options string may be a | 
| 326 | .RB ` \- ' | 
337 | .RB ' \- ' | 
| 327 | or a | 
338 | or a | 
| 328 | .RB ` + ' | 
339 | .RB ' + ' | 
| 329 | to indicate a special scanning mode. If the first calling form | 
340 | to indicate a special scanning mode.  If the first calling form in | 
| 330 | in the | 
341 | the | 
| 331 | .B SYNOPSIS  | 
342 | .B SYNOPSIS | 
| 332 | is used they are ignored; the environment variable | 
343 | is used they are ignored; the environment variable | 
| 333 | .B POSIXLY_CORRECT | 
344 | .B POSIXLY_CORRECT | 
| 334 | is still examined, though. | 
345 | is still examined, though. | 
| 335 |   | 
346 | .PP | 
| 336 | If the first character is  | 
347 | If the first character is | 
| 337 | .RB ` + ', | 
348 | .RB ' + ', | 
| 338 | or if the environment variable  | 
349 | or if the environment variable | 
| 339 | .B POSIXLY_CORRECT | 
350 | .B POSIXLY_CORRECT | 
| 340 | is set, parsing stops as soon as the first non\-option parameter  | 
351 | is set, parsing stops as soon as the first non\-option parameter | 
| 341 | (ie. a parameter that does not start with a  | 
352 | (i.e. a parameter that does not start with a | 
| 342 | .RB ` \- ') | 
353 | .RB ' \- ') | 
| 343 | is found that | 
354 | is found that is not an option argument.  The remaining parameters | 
| 344 | is not an option argument. The remaining parameters are all interpreted as | 
355 | are all interpreted as non\-option parameters. | 
| 345 | non\-option parameters. | 
356 | .PP | 
| 346 |   | 
 | 
 | 
| 347 | If the first character is a | 
357 | If the first character is a | 
| 348 | .RB ` \- ', | 
358 | .RB ' \- ', | 
| 349 | non\-option parameters are outputed at the place where they are found; in normal | 
359 | non\-option parameters are outputted at the place where they are | 
| 350 | operation, they are all collected at the end of output after a  | 
360 | found; in normal operation, they are all collected at the end of | 
 | 
 | 
361 | output after a | 
| 351 | .RB ` \-\- '  | 
362 | .RB ' \-\- ' | 
| 352 | parameter has been generated. Note that this | 
363 | parameter has been generated.  Note that this | 
| 353 | .RB ` \-\- ' | 
364 | .RB ' \-\- ' | 
| 354 | parameter is still generated, but it will always be the last parameter in | 
365 | parameter is still generated, but it will always be the last | 
| 355 | this mode. | 
366 | parameter in this mode. | 
| 356 | .SH COMPATIBILITY | 
367 | .SH COMPATIBILITY | 
| 357 | This version of  | 
368 | This version of | 
| 358 | .BR getopt (1) | 
369 | .BR getopt (1) | 
| 359 | is written to be as compatible as possible to  | 
370 | is written to be as compatible as possible to other versions. | 
| 360 | other versions. Usually you can just replace them with this version | 
371 | Usually you can just replace them with this version without any | 
| 361 | without any modifications, and with some advantages. | 
372 | modifications, and with some advantages. | 
| 362 |   | 
373 | .PP | 
| 363 | If the first character of the first parameter of getopt is not a  | 
374 | If the first character of the first parameter of getopt is not a | 
| 364 | .RB ` \- ',  | 
375 | .RB ' \- ', | 
 | 
 | 
376 | .B getopt | 
| 365 | getopt goes into compatibility mode. It will interpret its first parameter as | 
377 | goes into compatibility mode.  It will interpret its first | 
| 366 | the string of short options, and all other arguments will be parsed. It | 
378 | parameter as the string of short options, and all other arguments | 
| 367 | will still do parameter shuffling (ie. all non\-option parameters are outputed | 
379 | will be parsed.  It will still do parameter shuffling (i.e. all | 
| 368 | at the end), unless the environment variable  | 
380 | non\-option parameters are output at the end), unless the | 
 | 
 | 
381 | environment variable | 
| 369 | .B POSIXLY_CORRECT  | 
382 | .B POSIXLY_CORRECT | 
| 370 | is set. | 
383 | is set. | 
| 371 |   | 
384 | .PP | 
| 372 | The environment variable  | 
385 | The environment variable | 
| 373 | .B GETOPT_COMPATIBLE  | 
386 | .B GETOPT_COMPATIBLE | 
| 374 | forces  | 
387 | forces | 
| 375 | .B getopt | 
388 | .B getopt | 
| 376 | into compatibility mode. Setting both this environment variable and | 
389 | into compatibility mode.  Setting both this environment variable and | 
| 377 | .B POSIXLY_CORRECT | 
390 | .B POSIXLY_CORRECT | 
| 378 | offers 100% compatibility for `difficult' programs. Usually, though, | 
391 | offers 100% compatibility for 'difficult' programs.  Usually, though, | 
| 379 | neither is needed. | 
392 | neither is needed. | 
| 380 |   | 
393 | .PP | 
| 381 | In compatibility mode, leading  | 
394 | In compatibility mode, leading | 
| 382 | .RB ` \- ' | 
395 | .RB ' \- ' | 
| 383 | and  | 
396 | and | 
| 384 | .RB ` + ' | 
397 | .RB ' + ' | 
| 385 | characters in the short options string are ignored. | 
398 | characters in the short options string are ignored. | 
| 386 | .SH RETURN CODES | 
399 | .SH RETURN CODES | 
| 387 | .B getopt | 
400 | .B getopt | 
| 388 | returns error code  | 
401 | returns error code | 
| 389 | .B 0  | 
402 | .B 0 | 
| 390 | for succesful parsing,  | 
403 | for successful parsing, | 
| 391 | .B 1 | 
404 | .B 1 | 
| 392 | if | 
405 | if | 
| 393 | .BR getopt (3) | 
406 | .BR getopt (3) | 
| 394 | returns errors, | 
407 | returns errors, | 
| 395 | .B 2  | 
408 | .B 2 | 
| 396 | if it does not understand its own parameters, | 
409 | if it does not understand its own parameters, | 
| 397 | .B 3 | 
410 | .B 3 | 
| 398 | if an internal error occurs like out\-of\-memory, and | 
411 | if an internal error occurs like out\-of\-memory, and | 
| 399 | .B 4 | 
412 | .B 4 | 
| 400 | if it is called with  | 
413 | if it is called with | 
| 401 | .BR \-T . | 
414 | .BR \-T . | 
| 402 | .SH EXAMPLES | 
415 | .SH EXAMPLES | 
| 403 | Example scripts for (ba)sh and (t)csh are provided with the | 
416 | Example scripts for (ba)sh and (t)csh are provided with the | 
| 404 | .BR getopt (1) | 
417 | .BR getopt (1) | 
| 405 | distribution, and are optionally installed in  | 
418 | distribution, and are optionally installed in | 
| 406 | .B /usr/local/lib/getopt  | 
419 | .BR /usr/local/share/getopt/ | 
| 407 | or  | 
420 | or | 
| 408 | .BR /usr/lib/getopt . | 
421 | .BR /usr/share/getopt/ . | 
| 409 | .SH ENVIRONMENT | 
422 | .SH ENVIRONMENT | 
| 410 | .IP POSIXLY_CORRECT | 
423 | .IP POSIXLY_CORRECT | 
| 411 | This environment variable is examined by the | 
424 | This environment variable is examined by the | 
| 412 | .BR getopt (3) | 
425 | .BR getopt (3) | 
| 413 | routines. | 
 | 
 | 
| 414 | If it is set, parsing stops as soon as a parameter | 
426 | routines.  If it is set, parsing stops as soon as a parameter is | 
| 415 | is found that is not an option or an option argument. All remaining  | 
427 | found that is not an option or an option argument.  All remaining | 
| 416 | parameters are also interpreted as non\-option parameters, regardless | 
428 | parameters are also interpreted as non\-option parameters, regardless | 
| 417 | whether they start with a  | 
429 | whether they start with a | 
| 418 | .RB ` \- '. | 
430 | .RB ' \- '. | 
| 419 | .IP GETOPT_COMPATIBLE | 
431 | .IP GETOPT_COMPATIBLE | 
| 420 | Forces | 
432 | Forces | 
| 421 | .B getopt | 
433 | .B getopt | 
| 422 | to use the first calling format as specified in the | 
434 | to use the first calling format as specified in the | 
| 423 | .BR SYNOPSIS . | 
435 | .BR SYNOPSIS . | 
| 424 | .SH BUGS | 
436 | .SH BUGS | 
| 425 | .BR getopt (3) | 
437 | .BR getopt (3) | 
| 426 | can parse long options with optional arguments that are given an empty optional | 
438 | can parse long options with optional arguments that are given an | 
| 427 | argument (but can not do this for short options). This  | 
439 | empty optional argument (but can not do this for short options). | 
 | 
 | 
440 | This | 
| 428 | .BR getopt (1) | 
441 | .BR getopt (1) | 
| 429 | treats optional arguments that are empty as if they were not present. | 
442 | treats optional arguments that are empty as if they were not present. | 
| 430 |   | 
443 | .PP | 
| 431 | The syntax if you do not want any short option variables at all is | 
444 | The syntax if you do not want any short option variables at all is | 
| 432 | not very intuitive (you have to set them explicitely to the empty | 
445 | not very intuitive (you have to set them explicitly to the empty | 
| 433 | string). | 
446 | string). | 
| 434 |   | 
 | 
 | 
| 435 | .SH AUTHOR | 
447 | .SH AUTHOR | 
| 436 | Frodo Looijaard <frodo@frodo.looijaard.name> | 
448 | .MT frodo@frodo.looijaard.name | 
 | 
 | 
449 | Frodo Looijaard | 
 | 
 | 
450 | .ME | 
| 437 | .SH "SEE ALSO" | 
451 | .SH "SEE ALSO" | 
| 438 | .BR getopt (3), | 
452 | .BR getopt (3), | 
| 439 | .BR bash (1), | 
453 | .BR bash (1), | 
| 440 | .BR tcsh (1). | 
454 | .BR tcsh (1). | 
| 441 |   | 
455 | .SH AVAILABILITY | 
 | 
 | 
456 | You can download the latest getopt from | 
 | 
 | 
457 | .UR http://frodo.looijaard.name/project/getopt | 
 | 
 | 
458 | the author's home page | 
 | 
 | 
459 | .UE . | 
 | 
 | 
460 | It is also part of the util-linux package which is available from | 
 | 
 | 
461 | .UR ftp://\:ftp.kernel.org\:/pub\:/linux\:/utils\:/util-linux/ | 
 | 
 | 
462 | Linux Kernel Archive | 
 | 
 | 
463 | .UE . |