unknown option: qargument: hi thereΠΠ° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ ΠΈ Π½ΠΎΠ²ΡΠ΅ Π΄Π»ΠΈΠ½Π½ΡΠ΅ ΠΎΠΏΡΠΈΠΈ, ΠΈ ΠΈΡΡ ΠΎΠ΄Π½ΡΠ΅ ΠΎΠ΄Π½ΠΎΡΠΈΠΌΠ²ΠΎΠ»ΡΠ½ΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΌΠ΅ΡΠΈΠ²Π°ΡΡ. ΠΠ»ΠΈΠ½Π½ΡΠΌ ΠΎΠΏΡΠΈΡΠΌ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π΄Π°Π²Π°ΡΡ ΡΠΎΠΊΡΠ°ΡΠ΅Π½Π½ΡΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΡ, Π½ΠΎ ΠΎΠ½ΠΈ
Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ ΠΎΡ ΠΎΠ΄Π½ΠΎΡΠΈΠΌΠ²ΠΎΠ»ΡΠ½ΡΡ ΠΎΠΏΡΠΈΠΉ. ΠΠ»ΠΈΠ½Π½ΡΠ΅ ΠΎΠΏΡΠΈΠΈ Ρ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°Π²Π°ΡΡ ΠΊΠ°ΠΊ Π΅Π΄ΠΈΠ½ΡΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ Π² Π²ΠΈΠ΄Π΅ --ΠΎΠΏΡΠΈΡ= Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π΄Π°Π»Π΅Π΅:
$ <b>./longopt --init -l --file=fred.Ρ 'hi there'</b>option: ioption: lfilename: fred.Ρargument: hi thereΠΠ°Π»Π΅Π΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π° Π½ΠΎΠ²Π°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° longopt.c, ΠΏΠΎΠ»ΡΡΠ΅Π½Π½Π°Ρ ΠΈΠ· ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ argopt.c Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡΠΌΠΈ, ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡΠΈΠΌΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ Π΄Π»ΠΈΠ½Π½ΡΡ ΠΎΠΏΡΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ Π² ΡΠ΅ΠΊΡΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π²ΡΠ΄Π΅Π»Π΅Π½Ρ ΡΠ²Π΅ΡΠΎΠΌ.
#include <stdio.h>#include <unistd.h>#include <stdlib.h><i>#define _GNU_SOURCE</i><i>#include <getopt.h></i>int main(int argc, char *argv[]) {Β int opt;<i>Β struct option_longopts[] = {</i><i>Β {"initialize", 0. NULL, 'i'},</i><i>Β Β {"file" 1, NULL, 'f'},</i><i>Β Β {"list", 0, NULL, 'l'},</i><i>Β {0, 0, 0, 0}};</i><i>Β while ((opt = getopt_long(argc, argv, ":if:lr, longopts, NULL)) != -1) {</i>Β switch(opt) {Β Β case 'i':Β Β case 'l':Β Β case 'r':Β Β printf("option: %c\n", opt);Β Β break;Β Β case 'f':Β Β printf("filename: %s\n", optarg);Β Β break;Β Β case ':':Β Β printf("option needs a value\n");Β Β break;Β Β case '?':Β Β printf("unknown option: %c\n", optopt);Β Β break;Β }Β }Β for (; optind < argc; optind++)Β printf("argument: %s\n", argv[optind]);Β exit(0);}ΠΠ°ΠΊ ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ
Π€ΡΠ½ΠΊΡΠΈΡ
getopt_longgetoptgetopt_longoptindNULLΠΠ°ΡΡΠΈΠ² Π΄Π»ΠΈΠ½Π½ΡΡ ΠΎΠΏΡΠΈΠΉ ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· ΡΡΠ΄Π° ΡΡΡΡΠΊΡΡΡ ΡΠΈΠΏΠ°
struct optionΠ‘ΡΡΡΠΊΡΡΡΠ° Π΄Π»ΠΈΠ½Π½ΠΎΠΉ ΠΎΠΏΡΠΈΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π° Π² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡΠ½ΠΎΠΌ ΡΠ°ΠΉΠ»Π΅ getopt.h ΠΈ Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°ΡΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ
_GNU_SOURCEgetopt_longstruct option {Β const char *name;Β int has_arg;Β int *flag;Β int val;};ΠΠ»Π΅ΠΌΠ΅Π½ΡΡ ΡΡΡΡΠΊΡΡΡΡ ΠΎΠΏΠΈΡΠ°Π½Ρ Π² ΡΠ°Π±Π». 4.1.
Π’Π°Π±Π»ΠΈΡΠ° 4.1.
| ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ ΠΎΠΏΡΠΈΠΈ | ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ |
|---|---|
name | ΠΠ°Π·Π²Π°Π½ΠΈΠ΅ Π΄Π»ΠΈΠ½Π½ΠΎΠΉ ΠΎΠΏΡΠΈΠΈ. Π‘ΠΎΠΊΡΠ°ΡΠ΅Π½ΠΈΡ Π±ΡΠ΄ΡΡ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡΡΡ Π΄ΠΎ ΡΠ΅Ρ ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° ΠΎΠ½ΠΈ Π½Π΅ ΡΠΎΠ·Π΄Π°Π΄ΡΡ ΠΏΡΡΠ°Π½ΠΈΡΡ ΠΏΡΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ Π½Π°Π·Π²Π°Π½ΠΈΠΉ Π΄ΡΡΠ³ΠΈΡ ΠΎΠΏΡΠΈΠΉ |
has_arg | ΠΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π»ΠΈ ΡΡΠ° ΠΎΠΏΡΠΈΡ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ. ΠΠ°Π΄Π°ΠΉΡΠ΅ 0 Π΄Π»Ρ ΠΎΠΏΡΠΈΠΉ Π±Π΅Π· Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ², 1 Π΄Π»Ρ ΠΎΠΏΡΠΈΠΉ, Ρ ΠΊΠΎΡΠΎΡΡΡ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΠΈ 2 Π΄Π»Ρ ΠΎΠΏΡΠΈΠΉ Ρ Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠΌ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠΌ |
flag | ΠΠ°Π΄Π°ΠΉΡΠ΅ NULLgetopt_longvalgetopt_longvalflag |
val | ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ getopt_long |
ΠΠ»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠ²Π΅Π΄Π΅Π½ΠΈΠΉ ΠΎ Π΄ΡΡΠ³ΠΈΡ ΠΎΠΏΡΠΈΡΡ , ΡΠ²ΡΠ·Π°Π½Π½ΡΡ Ρ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡΠΌΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ
getoptgetoptΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ
ΠΡ ΠΎΠ±ΡΡΠΆΠ΄Π°Π»ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ Π² Π³Π»Π°Π²Π΅ 2. ΠΡΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ ΡΡΠ΅Π½Π°ΡΠΈΠ΅Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠΈ ΠΈ Π΄ΡΡΠ³ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ. ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ ΠΈΡ Π΄Π»Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠΉ ΡΡΠ΅Π΄Ρ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π΅ΡΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ
HOME$ <b>echo $ΠOΠΠ</b>/home/neilΠΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠΈ
set