`
jobar
  • 浏览: 346646 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Shell script中使用getopt例子

阅读更多
使用getopt可以非常方便的格式话选项跟对应的参数,例子如下

#!/bin/bash
set -- `getopt -q ab:c "$@"`
while [ -n "$1" ]
do
  case "$1" in
  -a)
     echo "option -a";;
  -b) 
	value="$2"	
	echo "option -b with para $value"
shift;;
  -c) echo "option -c";;
  --) shift
      break;;
  *) echo "$1 not option";;
 esac
 shift
done
count=1
for para in "$@"
do
 echo "#$count=$para"
 count=$[$count+1]
done

./test -ab test1 -cd test2 test3 test4
结果:option -a
option -b with para 'test1'
option -c
#1='test2'
#2='test3'
#3='test4'

getopt 用法:
getopt options optstring parameters

对于./test -ab test1 -cd "test2 test3" test4
这样的参数类型,getopt是无能为力的。这就需要getopts了

#!/bin/bash
while getopts :ab:c opt
do
 case $opt in
 a) echo "-a option";;
 b) echo "-b option with value $OPTARG";;
 c) echo "-c option";;
 *) echo $opt not a option;;
 esac
done

OPTARG 环境变量存放对应选项的参数
./test -ab "hello,world" -cdefg
结果:
-a option
-b option with value hello,world
-c option
? not a option
? not a option
? not a option
? not a option

命令参数的处理
#!/bin/bash
while getopts :ab:cd opt
do
 case $opt in
 a) echo "-a option";;
 b) echo "-b option with value $OPTARG";;
 c) echo "-c option";;
 d) echo "-d option";;
 *) echo $opt not a option;;
 esac
done
count=1
shift $[$OPTIND-1]
for para in "$@"
do
echo "#$count=$para"
count=$[$count+1] 
done

./test -abtest1 -cd test2 test3 test4
结果:
-a option
-b option with value test1
-c option
-d option
#1=test2
#2=test3
#3=test4
OPTIND环境变量存放getopts命令剩余的参数列表当前位值
用法:getopts optstring variable
分享到:
评论

相关推荐

    getopt源码下载及getopt_long源码下载

    通过阅读和分析提供的代码,可以更深入地了解`getopt`和`getopt_long`的工作方式,同时也可以学习如何在自己的程序中使用它们来优雅地处理命令行参数。这不仅有助于提高代码的可读性和可维护性,还能使程序更加符合...

    getopt.h和cpp

    将这个 `getopt.cpp` 文件添加到Windows项目中,可以使得习惯于使用 `getopt` 的开发者在Windows环境下也能轻松地处理命令行参数。这对于跨平台开发非常有用,因为它允许你在不同的操作系统上保持代码的一致性。 总...

    使用getopt命令.sh

    使用getopt命令

    linux中getopt的用法

    ### Linux中Getopt的深入解析与应用 #### Getopt功能概览 `getopt`是Linux及类Unix系统中用于解析命令行参数的一个强大工具,它简化了程序开发者处理复杂命令行选项的工作,使得程序能够更加高效地识别并响应用户...

    getopt.h getopt.c getopt getopt_long 字符串 命令行

    在C语言编程中,`getopt.h` 和 `getopt.c` 是两个非常重要的文件,它们主要用于处理命令行参数。`getopt` 是一个库函数,用于解析程序启动时的命令行选项,而 `getopt_long` 是 `getopt` 的扩展版本,增加了对长选项...

    getopt源码,32,64库

    `getopt`是一个在许多Unix-like操作系统中广泛使用的命令行参数解析函数库。它使得程序能够解析命令行选项,按照标准的Unix风格处理 `-` 开头的单字符选项和 `--` 开头的长选项。这个库对于编写接受命令行参数的程序...

    getopt.h getopt.c getopt_long 文件和函数说明

    `getopt.h` 和 `getopt.c` 是在C语言编程中处理命令行选项解析的两个关键文件。`getopt` 函数是C标准库的一部分,通常用于解析命令行参数,而`getopt_long` 是一个扩展功能,提供更方便的方式来处理长选项。 `...

    getopt.h getopt getopt_long

    win10 vs2019下的 getopt及getopt_long getopt/getopt_long函数是GNU C中的函数

    在linux下的getopt源码

    `getopt`函数的基本使用方式是,它会从程序的`argv`参数中按顺序解析命令行选项,并返回当前处理的选项。选项通常以破折号(-)开头,后面跟随一个字母或数字,如`-h`表示帮助,`-v`表示详细模式等。getopt函数可以...

    RTMP可用的getOpt.h和getOpt.c

    在IT行业中,尤其是在软件开发领域,RTMP(Real-Time Messaging Protocol)是一种广泛使用的协议,用于在互联网上传输音频、视频和其他实时数据。RTMP库是实现这种协议的关键组件,允许开发者构建流媒体服务器或者...

    Shell脚本中使用getopts处理多命令行选项

    在Shell脚本编程中,处理命令行选项是一个常见的任务,特别是在编写复杂的自动化脚本时。`getopts`命令就是Linux Shell提供的一种工具,用于解析命令行选项和参数,使得脚本能够灵活地根据用户提供的选项执行不同的...

    GetOpt一个命令行参数解析器

    在PHP中使用GetOpt,首先需要包含对应的扩展或库。在提供的文件名`getopt-php-getopt-php-9df490d`中,我们可以推测这是一个GetOpt的PHP实现版本,可能包含了源代码和其他相关资源。要使用这个库,开发者需要将其...

    getopt windows实现

    在Windows操作系统中,通常开发环境使用的是MSVC (Microsoft Visual C++) 或者其他与Windows API紧密集成的工具,而这些工具并不直接支持Linux中的`getopt`、`getopt_long`和`getopt_long_only`函数。这些函数是用于...

    命令行解析函数getopt用法详解

    当`getopt`函数在`while`循环中使用时,循环结束后,剩下的字符串视为操作数,在`argv[optind]`至`argv[argc-1]`中可以找到。 * `int opterr`:这个变量非零时,`getopt`函数为“无效选项”和“缺少参数选项,并输出...

    C++版本Windows命令行getopt参数类

    功能:C++命令行参数解析类...(控制台应用程序中使用)在 Windows 平台下使用 Linux 的 getopt, getopt_long, getopt_long_only 函数。压缩包内包含getopt.h,getopt.c和使用代码示例。在VS2010下编译通过,运行良好。

    getopt在win32的实现(含源代码)

    但是,通过移植或者自实现,`getopt`也可以在Win32环境中使用。 本文将详细讲解`getopt`的原理、使用方法以及如何在Win32下实现`getopt`。首先,我们来看`getopt`的基本用法。`getopt`通常与两个全局变量`optind`和...

    getopt多参数解析函数具体分析命令行参数解析

    `getopt()`函数是C语言中用于解析命令行参数的标准函数,主要应用于Unix/Linux系统,也可以在其他支持C语言的环境中使用。它简化了对带有选项和参数的命令行输入的处理,使得程序能够优雅地解析和理解用户提供的...

    C#getopt(命令行处理函数)

    C#中的getopt封装,方便处理cmd命令。添加引用后,使用范例如下: using CodePoints; using System; ... public static void Main ( string [] args ) { int c = 0, aflag = 0, bflag = 0; string cvalue = "...

    windows下的getopt/getopt_long等函数,vs2010实测可用

    GNU libc提供了getopt和getopt_long用于解析命令行参数,使用方便,但是windows环境没有提供。故将GNU libc提供的源码稍加修改,整理出了windows下可用的getopt和getopt_long。

    适用于stm32的shell代码和例程

    shell默认使用链表来构建查询系统,但也提供了平衡二叉树的方式,在shell.h中有开启的开关,如不需要可以不添加avltree.c。 include "shell.h" 2,先对硬件进行基本的初始化。 撰写串口发送函数,形如 void usart_...

Global site tag (gtag.js) - Google Analytics