linux開發 命令列引數解析 getopt

2021-04-20 21:32:45 字數 1298 閱讀 1218

linux大部分工具都是以命令列方式執行,因此都需要對命令列引數解析,它們大多都是用相同的解析方法!(有點廢話)再次記錄下來!省得以後再查。

大部分軟體都是用getopt系列函式解析命令列,glibc中就提供了該函式的實現,即使沒有依賴glibc,其他軟體包也會提供相應的實現。

短格式的引數解析:

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

argc: main函式傳入的引數個數

argv: main函式傳入的引數指標

optstring: 乙個用來描述接受的引數字串,每個字元代表乙個選項,其中需要帶引數的加":"符號,例如"a:bc",表示接受a,b,c三個選項,其中a帶引數 呼叫如 cmd -a 123 -b -c

返回值: 返回解析到的選項的字元如'a',如果全部解析完畢返回-1. 解析到不在optstring中列出的返回'?'

全域性變數:

char *optarg 選項附帶的引數的指標

int optind  下乙個被處理的argv下標

int opt = 0;

while ((opt = getopt(argc, argv, "a:bc")) != -1) 

}解析裝格式選項:

int getopt_long(int argc, char * const argv, const char *optstring, const struct option *longopts, int *longindex);

支援 --arg=param --arg parm的格式,也支援短格式

longopts option的陣列

struct option }

longindex 如果不為null 被設定為解析到的長選項索引

int getopt_long(int argc, char * const argv, const char *optstring, const struct option *longopts, int *longindex);

支援 -arg=param -arg param

指令碼中解析命令列選項

getopts

while getopts a:bc opt; do

case

$opt

a) echo

$optarg ;;

b) ;;

c) ;;

?) ;;

esac

done

解析命令列引數

include include include include int make argv const char astr,const char delimiters,char argvp void free argv char argvp int main int argc,char argv i...

linux中解析命令列引數

linux 中解析命令列引數 getopt long用法 getopt long支援長選項的命令列解析,使用man getopt long,得到其宣告如下 include int getopt long int argc,char const argv,const char optstring,co...

LINUX中解析命令列引數

author liujun time 2013 3 18 在linux中你輸入比如 insert ll kk mm qq 你如何得到ll kk mm qq,這是需要用到命令列的解析,來分離字串。有三種方法 第一 getopt long支援長選項的命令列解析,使用man getopt long,得到其...