原型:
int getopt(int argc, char * const argv[], const char *optstring);說明:
用來分析命令列參數,引數argc和argv是由 main()傳遞的參數個數和內容。getopt提供三個global variable :
參數 optstring 是有效選項(字母)。如 " a:bf"。代表要接受的option有 -a, -b, -f。
其中option a的後面是":"號,代表-a option後還有參數(例如-aext2)。
optarg: 像a:這樣的參數,getopt會將-a後面的字串放到optarg中。
optopt: 有額外參數時,optopt 會儲存option,如果getopt()找不到符合的參數則會
列印錯誤,並將全域變數optopt設為'?'字元。
列印錯誤,並將全域變數optopt設為'?'字元。
opterr: 如果不希望getopt()印出錯誤訊息則只要將全域變數opterr設為0即可。
傳回值:
參數字母: 如果找到符合的參數
'?': 如果參數不包含在引數optstring 的選項字母
-1: 分析結束
範例:
#include <stdio.h>
#include <unistd.h>
int main(int argc, char *argv[])
{
int ch;
opterr = 0; //不印出錯誤訊息
while((ch=getopt(argc,argv,"a:cef"))!=-1)
switch(ch)
{
case 'a':
printf("choose a: %s\n",optarg);
break;
case 'c':
printf("option c\n");
break;
case 'f':
printf("option f\n");
break;
default:
printf("other option: %c\n",ch);
break;
}
printf("optopt = %c\n",optopt);
}
結果:
[root@localhost shelltest]# ./test -acef choose a: cef optopt = [root@localhost shelltest]# ./test -a other option: ? optopt = a[root@localhost shelltest]# ./test -aaa
choose a: aa
optopt =
[root@localhost shelltest]# ./test -c
option c
optopt =
[root@localhost shelltest]# ./test -cc
option c
option c
optopt =
source code http://opencobol.add1tocobol.com/doxy/dc/d53/getopt_8c.html
沒有留言:
張貼留言