• 例子:

    while getopts ":e:s:pd:l" arg;
    do
    case $arg in
    e)
    ghs_env=$OPTARG
    ;;
    s)
    ghs_service=$OPTARG
    ;;
    p)
    proxy=`sed '/^PROXY=/!d;s/.*=//' config.properties`
    ;;
    d)
    dir_path=$OPTARG
    ;;
    l)
    if [ -d "log" ]; then
    rm -r log
    mkdir log
    else
    mkdir log
    fi
    log_dir=$(cd `dirname $0`; pwd)/log
    ;;
    ?)
    echo "Usage: $(basename $0) [-e somevalue] [-s somevalue] [-p somevalue] [-d somevalue]" 1>&2
    exit 1
    ;;
    esac
    done
  • getopts有两个参数,第一个参数是一个字符串,包括字符和" : ", 每一个字符都是一个有效的选项,如果字符后面带有" : ", 表示这个字符有自己的参数。getopts从命令中获取这些参数,并且删去了" - ", 并将其赋值在第二个参数中,即"OPTARG"中,在例子中,$OPTARG存储相应选项的参数。

  • while getopts ":e:s:pd:l" arg;  这行代码中,第一个冒号表示忽略系统报错信息,使用自定义的报错信息;字符后面的冒号表示该选项必须自己的参数。

    • 第一个冒号存在时(自定义报错信息):

      1. 当指定的参数不存在时,variable设置为" : ", 对应的$OPTARG为此时的选项 (这个尚未搞明白是什么意思)

      2. 当指定的选项是带参数的而没有提供参数或是非法选项(指定的选项没有定义),variable设置为" ? ", 对应的$OPTARG为此时的选项

    • 第一个冒号不存在时(会按照系统的定义报错):

      1. 指定了非法选项(不存在的选项或者说是没有定义的选项),会报错:scriptname:illegal option — 选项

      2. 选项需要参数但没有指定,会报错:scriptname: option requires an argument –选项


    • 单个字符后面接一个冒号,表示选项必须自己的参数,参数可以紧跟选项后或者以空格隔开,该参数的指针赋给OPTARG。

    • 单个字符后面接两个冒号表示该选项必须自己的参数且参数紧跟选项后不能以空格隔开(我试过,感觉有没有空格都可以,因此,我觉得如果要加参数,字符后只要写一个冒号就可以了),该参数的指针赋给OPTARG。

shell脚本中关于getopts的使用方法的更多相关文章

  1. Shell脚本中让进程休眠的方法(sleep用法)

    有时候写Shell的脚本,用于顺序执行一系列的程序. 有些程序在停止之后并没能立即退出,就例如有一个 tomcat 挂了,就算是用 kill -9 命令也还没瞬间就结束掉. 这么如果 shell 还没 ...

  2. [转]Shell脚本中发送html邮件的方法

    <span "="">作为运维人员,免不了要编写一些监控脚本,并将监控结果及时的发送出来.那么通过邮件发送是比较常用的一种通知方式了.通常的,如果需要发送的内 ...

  3. shell脚本中8种字符串截取方法_转自脚本之家

    转自:http://www.jb51.net/article/56563.htm 参考:http://blog.csdn.net/taiyang1987912/article/details/3955 ...

  4. Shell脚本中判断输入参数个数的方法投稿:junjie 字体:[增加 减小] 类型:转载

    Shell脚本中判断输入参数个数的方法 投稿:junjie 字体:[增加 减小] 类型:转载   这篇文章主要介绍了Shell脚本中判断输入参数个数的方法,使用内置变量$#即可实现判断输入了多少个参数 ...

  5. ftp在shell脚本中的使用方法

    1. ftp自动登录批量下载文件. #####从ftp服务器上的/home/data 到 本地的/home/databackup#####!/bin/bashftp -n<<!open 1 ...

  6. Shell脚本中执行sql语句操作mysql的5种方法【转】

    对于自动化运维,诸如备份恢复之类的,DBA经常需要将SQL语句封装到shell脚本.本文描述了在Linux环境下mysql数据库中,shell脚本下调用sql语句的几种方法,供大家参考.对于脚本输出的 ...

  7. 学习Linux shell脚本中连接字符串的方法

    这篇文章主要介绍了Linux shell脚本中连接字符串的方法,如果想要在变量后面添加一个字符,可以用一下方法: 代码如下: $value1=home $value2=${value1}"= ...

  8. Shell脚本中调用另外一个脚本的方法

    (转载): 在Linux平台上开发,经常会在console(控制台)上执行另外一个脚本文件,经常用的方法有:./my.sh 或 source my.sh 或 . my.sh:这三种方法有什么不同呢?我 ...

  9. [转]Shell脚本中获取SELECT结果值的方法

    http://blog.itpub.net/13885898/viewspace-1670297/ 有时候我们可能会需要在Shell脚本中执行SELECT语句,并将结果赋值给一个变量,对于这样的情形, ...

随机推荐

  1. 看AppCan移动管理平台如何助力企业移动化

    AppCan企业移动管理平台(EMM)是为企业移动化战略提供综合管理的平台产品.AppCan EM移动管理平台为企业提供对用户.应用.设备.内容.邮件的综合管理服务,并在此基础上为企业提供统一应用商店 ...

  2. Django Template(模板)

    一.模板组成 组成:HTML代码 + 逻辑控制代码 二.逻辑控制代码的组成 1.变量 语法格式 : {{ name }} # 使用双大括号来引用变量 1.Template和Context对象(不推荐使 ...

  3. Python 原生协程------asyncio

    协程 在python3.5以前,写成的实现都是通过生成器的yield from原理实现的, 这样实现的缺点是代码看起来会很乱,于是3.5版本之后python实现了原生的协程,并且引入了async和aw ...

  4. vue 父子之间的通讯

    //父组件<template>     <Button @click='openChild'><Button>      <child-modal :moda ...

  5. tsc.exe 已退出 代码为 1

    从微软官网下载TypeScript_Dev14Full,解决问题,下载地址https://www.microsoft.com/zh-CN/download/confirmation.aspx?id=4 ...

  6. React Native & app demos

    React Native & app demos https://github.com/ReactNativeNews/React-Native-Apps https://github.com ...

  7. tomcat server.xml结构

    所有xml文件使用的文件头 <?xml version='1.0' encoding='utf-8'?> 2 <Server port="8005" shutdo ...

  8. java 中的引用数据类型

    字符串String 在java 中,字符串不是基本数据类型,而是String 类的对象,当我们创建一个字符串的时候,真的是要使用new 来调用String 构造函数 String str = new ...

  9. java文件运行的过程

    javac .java——>编译成.class文件(字节码) 参考: https://www.cnblogs.com/yxwkf/p/3855363.html https://www.jians ...

  10. IntelliJ IDEA 创建 Maven简单项目

    创建简单Maven项目 使用IDEA提供的Maven工具,根据artifact创建简单Maven项目.根据下图操作,创建Maven项目. 使用IDEA提供的Maven工具创建的Maven简单项目目录结 ...