getopt 解析命令選項及引數

2021-08-08 13:41:44 字數 1542 閱讀 1880

形式:

int getopt(argc,argv,」引數列表」);

int getopt(int argc, char *const argv,const char *optstring);

呼叫一次,返回乙個選項。在命令列選項引數再也檢查不到optstring 中包含的選項時,返回-1,同時optind儲存第乙個不包括選項的命令引數。

何為 選項 ,引數**

字串 optstring 可以下列元素

1.但個字元,表示選項

2.單個字元後接乙個冒號:表示該選項後必須跟乙個引數。 引數緊跟著在選項後面或者以空格隔開。該引數的指標賦給optarg.

3.單個字元後跟兩個冒號::,表示該選項後必跟乙個引數。引數必須緊跟在選項後,不能以空格隔開。該引數的指標賦給optarg.

4.預設情況下,getopt會重新排列命令引數的順序,所以到最後所有不包括選項的命令引數都排到最後。

getopt處理以「-」開頭的命令列引數,optstring=」ab:c::d::」,命令行為getopt.exe -a -b host -ckeke -d haha

如: getopt.exe -a ima -b host -ckeke -d haha

-a,-b host,-ckeke, ima -d haha

解析:

extern char *optarg ;//選項的引數指標

extern int optind;//下次呼叫getopt,從optind儲存的位置重新開始檢查選項

extern int opterr,//pterr=0,getopt不向stderr輸出錯誤資訊

extern int optopt;//當命令列選項字元不包括在optstring 中或者選項缺少必要的引數時,該選項儲存在optopt中,getopt返回「?「

例題

include

int main(int argc,char **argv)

int ch;

opterr = 0;

while((ch = getopt(argc,argv,」a:bcde」))!= -1)

switch(ch)

case 『a』: printf(「option a:』%s』\n」,optarg); break;

case 『b』: printf(「option b :b\n」); break;

default: printf(「other option :%c\n」,ch);

printf(「optopt +%c\n」,optopt);

執行 $./getopt –b

option b:b

執行 $./getopt –c

other option:c

執行 $./getopt –a

other option :?

執行 $./getopt –a12345

option a:』12345』

python 解析引數getopt

如果python想要去解析命令列的引數可以import getopt實現,該模組支援短選項和長選項兩種格式 短選項格式為 加上單個字母選項 長選項為 加上乙個單詞。opts,args getopt.getopt sys.ar 1 hi o s e input output symble oddeve...

使用getopt解析命令列引數

python中可以使用getopt來解析命令列引數,其定義如下 getopt args,shortopts,longopts 其中,getopt返回opts,args元組,opts是根據shortopts,longopts引數解析出來的 key,value 列表,而其他剩餘引數就會放到args列表中...

linux開發 命令列引數解析 getopt

linux大部分工具都是以命令列方式執行,因此都需要對命令列引數解析,它們大多都是用相同的解析方法!有點廢話 再次記錄下來!省得以後再查。大部分軟體都是用getopt系列函式解析命令列,glibc中就提供了該函式的實現,即使沒有依賴glibc,其他軟體包也會提供相應的實現。短格式的引數解析 int ...