shell处理命令行选项getopts

getopts是shell的一个内置命令,通常用来处理shell命令行选项,但是不能直接处理长选项(如:--prefix=/home等)。

getopts有2个参数,第一个参数是字符串,包括字符和“:”,每一个字符都是一个有效的选项,如果字符后面带有“:”,表示这个字符有自己的参数。第二个参数用来存储获取的选项。

shell为getopts提供了2个内置变量:

OPTARG:存储相应选项的参数;

OPTIND:存储原始$*中下一个要处理选项的位置;

实例:

#!/bin/bash

echo $*
while getopts ":a:bc" opt    #第一个冒号表示忽略错误
do
        case $opt in
                a ) echo $OPTARG
                    echo $OPTIND;;
                b ) echo "b $OPTIND";;
                c ) echo "c $OPTIND";;
                ? ) echo "error"
                    exit 1;;
        esac
done
echo $OPTIND
shift $(($OPTIND - 1))
#通过shift $(($OPTIND - 1))的处理,$*中就只保留了除去选项内容的参数,可以在其后进行正常的shell编程处理了。
echo $0
echo $*

执行命令:./getopts.sh -a 11 -b -c
-a 11 -b -c
11
3
b 4
c 5
5
./getopts.sh

参考资料:

http://blog.csdn.net/li385805776/article/details/16981541

时间: 2024-10-03 19:03:55

shell处理命令行选项getopts的相关文章

Bash Shell中命令行选项/OA现金盘平台租用

写程序的时候经常要处理命令行参数,本文描述在Bash下的命令行处理方式. 选项与参数: OA现金盘平台租用(企 娥:217 1793 408) 如下一个命令行: . / test.sh - f config.conf - v -- prefix =/ home 我们称-f为选项,它需要一个参数,即config.conf, -v 也是一个选项,但它不需要参数. --prefix我们称之为一个长选项,即选项本身多于一个字符,它也需要一个参数,用等号连接,当然等号不是必须的,/home可以直接写在--

使用getopts命令解析shell脚本的命令行选项

转自:http://yejinxin.github.io/parse-shell-options-with-getopts-command/ 标准的Unix命令一般都提供很多选项,使用者通过命令行提供具体的选项和参数,格式如下: command -options parameters filename getopts是shell内建的一个命令,它可以帮助我们处理命令行选项,使得我们的脚本也可以与unix命令保持风格一致.getopts的用法格式为: getopts option_string v

(003)mysqld之命令行选项

十年运维系列之基础篇 - MySQL 作者:曾林 联系:[email protected] 网站:www.jplatformx.com 版权:文章未经同意请勿转载 一.引言 mysqld是MySQL服务器.本小节重点介绍一下mysqld的命令行选项.在介绍之前首先需要明白什么是命令行选项. #mysqld --verbose --help 上表是在linux shell下运行mysqld服务器程序,其中verbose和help就是命令行选项.下表命令完成相同的功能,但是它的命令行选项却是v和?.

shell解析命令行的过程以及eval命令

本文说明的是一条linux命令在执行时大致要经过哪些过程?以及这些过程的大致顺序. 1.1 shell解析命令行 shell读取和执行命令时的大致操作过程如下图: 以执行以下命令为例: echo -e "some files:" ~/i* "\nThe date:$(date +%F)\n$name's age is $((a+4))" >/tmp/a.log 假设在执行该命令前,已赋值变量"name=longshuai"和"a=

make的命令行选项

make的命令行选项 -b -m 忽略,提供其它版本make兼容性. -B --always-make 强制重建所有规则的目标,不根据规则的依赖描述决定是否重建目标文件. -C DIR --directory=DIR 在读取Makefile之前,进入目录“DIR”,就是切换工作目录到“DIR”之后执行make.存在多个“-C”选项时,make的最终工作目录是第一个目录的相对路径.如:“make –C / -C etc”等价于“make –C /etc”.一般此选项被用在递归地make调用中. -

参数传递:传值参数,指针形参,传引用参数,const形参和实参,数组形参,main:处理命令行选项,含有可变形参的函数

重点: 1.每次调用函数时都会重新创建它的形参,并用传入的实参对形参进行初始化. NOTE: 形参初始化的机理与变量初始化一样. 2.形参的类型决定了形参和实参交互的方式. (引用->绑定,非引用->拷贝) 3.实参分为:被引用传递(引用形参是实参的别名),被值传递(实参形参是两个相互独立的对象). 4.传值参数:函数对形参做的所有操作都不会影响实参. 5.指针形参:指针的行为和其他非引用类型一样,当执行指针拷贝操作时,拷贝的是指针的值.拷贝后,两个指针是不同的指针. NOTE: C程序员常常

简单的命令行选项

简单的命令行选项: import sys def main(): if len(sys.argv) != 3: print 'usage: ./wordcount.py {--count | --topcount} file' sys.exit(1) option = sys.argv[1] filename = sys.argv[2] if option == '--count': print_words(filename) elif option == '--topcount': print

python 解析命令行选项

问题: 程序如何能够解析命令行选项 解决方案 argparse 模块可被用来解析命令行选项 argparse 模块 argparse 模块是标准库中最大的模块之一,拥有大量的配置选项 dest 参数指定解析结果被指派给属性的名字 metavar 参数被用来生成帮助信息 action 参数指定跟属性对应的处理逻辑, 通常的值为 store ,将其存储为字符串,action='append'  用来存储某个值或将多个参数值收集到一个列表中 一旦参数选项被指定,你就可以执行 parser.parse(

CSP 命令行选项(201403-3)

问题描述 请你写一个命令行分析程序,用以分析给定的命令行里包含哪些选项.每个命令行由若干个字符串组成,它们之间恰好由一个空格分隔.这些字符串中的第一个为该命令行工具的名字,由小写字母组成,你的程序不用对它进行处理.在工具名字之后可能会包含若干选项,然后可能会包含一 些不是选项的参数. 选项有两类:带参数的选项和不带参数的选项.一个合法的无参数选项的形式是一个减号后面跟单个小写字母,如"-a" 或"-b".而带参数选项则由两个由空格分隔的字符串构成,前者的格式要求与无