美文网首页
python、go、shell、c、命令行参数解析

python、go、shell、c、命令行参数解析

作者: __六便士 | 来源:发表于2019-02-25 21:35 被阅读0次

用的半生不熟的Linux环境,看看几种语言的命令行参数解析~


1. python

python demo.py -u tom -g users -o output.log --time-out 300

使用getopt.getopt()模块

import getopt

import sys

try:

    args, opts = getopt.getopt(sys.argv[0], "u:g:o:", "time_out=")

except Exception as ex:

    print(str(ex))

for  key,value in opts:

    if key == "-u":

          username = value

    elif key == "-g":

          group = value

    elif key == "-o":

          log_file == value

    elif key == "--time-out":

          time_out = value

    else:

          print("Unrecognized parameter %s" % key)

非正式代码,忽略语法错误。。。


2. golang

使用flag包

package main

 import (

   "flag"

    "fmt"

   )

   func main(){

        var src string

        var memo string

        var level int

        //定义flag参数

        flag.StringVar(&src, "src", "", "source file")

        flag.IntVar(&level, "level", 3, "debug level")

        flag.StringVar(&memo, "memo", "", "the memory")

        //解析

        flag.Parse()

       //显示帮助信息

        flag.Usage()

         fmt.Printf("src=%s, level=%d, memory=%s\n", src, level, memo)

}

go run args.go -level 1 -memo 256 -src source

-level int

    debug level

  -memo string

    the memoey

  -src string

    source file

src=source, level=1, memory=256


3. shell

sh hello.sh a b c d e f

参数解析:

    ${0} --> hello.sh

    ${1} --> a

    ${2} --> c

    ${3} --> d

    ${4} --> e

    ${5} --> f

shell脚本的参数解析,直接获取参数位置使用即可...

notice: 获取参数位置时请加上{}  当参数的数量到2位数时, $10 ---> $1 拼接 0,这样就会获取错误的参数啦!!!


4. C

第一种:

main(int argc,char *argv[ ])

1.argc为整数

2.argv为指针的指针(可理解为:char **argv or: char *argv[] or: char argv[][]   ,argv是一个指针数组)

 注:main()括号内是固定的写法。

 #include <stdio.h>

  int main(int argc, char **args) {

      int i = 0;

       printf("%d\n", argc);

      for (i = 0; i < argc; ++i) {

           printf("%s\n", args[i]);

       }

       return 0;

 }

执行:./test 1 2 3

4

./test

1

2

3

第二种:

头文件 #include <unistd.h>

定义函数:int getopt(int argc, char * const argv[], const char * optstring);

函数说明:getopt()用来分析命令行参数。

1、参数argc 和argv 是由main()传递的参数个数和内容。

2、参数optstring 则代表欲处理的选项字符串。

此函数会返回在argv 中下一个的选项字母,此字母会对应参数optstring 中的字母。

如果选项字符串里的字母后接着冒号":",则表示还有相关的参数,全域变量optarg 即会指向此额外参数。

如果getopt()找不到符合的参数则会印出错信息,并将全域变量optopt 设为"?"字符, 如果不希望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: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,shell,go和C的命令行参数解析纯属好奇,也了解下~~~

相关文章

  • python、go、shell、c、命令行参数解析

    用的半生不熟的Linux环境,看看几种语言的命令行参数解析~ 1. python python demo.py -...

  • getopts 解析bash 命令行参数

    getopts 解析bash 命令行参数 Shell脚本中的一项常见任务是解析命令行参数。 Bash提供了内置函数...

  • C/C++ 命令行参数解析库选型

    C/C++ 程序可以用的命令行参数解析库主要有如下这些: cmdline:一个轻量级的 C/C++ 命令行参数解析...

  • python学习笔记之--命令行参数处理一(getopt)

    简介 python的getopt模块是一种C风格的命令行选项及参数解析,主要是协助脚本解析sys.argv中的命令...

  • Go语言 命令行解析(二)

    今天我们继续讲解Go语言中命令行,当我们在解析命令行传递的参数时通常会想用最简单的方法来解析自己行用到的命令行参数...

  • flag

    编写命令行程序时会使用不同的启动参数(命令行参数)来控制程序的行为 Go编写命令行程序时,获取并解析命令行参数的方...

  • Go标准库flag使用

    Go语言标准库flag基本使用 Go语言内置的flag包实现了命令行参数的解析,flag包使得开发命令行工具更为简...

  • rpdb2源码分析(2)

    11、怎么解析命令行参数? 使用getopt模块。请参考: Python命令行:getopt模块详解https:/...

  • argparse

    argparse import argparse命令行参数解析模块简单示例 选择性添加参数 python test...

  • Python 获得命令行参数的方法

    Python 获得命令行参数的方法 如果想对python脚本传参数,python中对应的argc, argv(c语...

网友评论

      本文标题:python、go、shell、c、命令行参数解析

      本文链接:https://www.haomeiwen.com/subject/mfidoxtx.html