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