欢迎您,零度科技专业海外服务器租用
公司电话: 24小时电话: 

当前位置:首页>帮助教程>Linux 系统教程

目录导航

shell编程神器-getopts

美国SK机房 发布于 2014-09-15  

Linux 系统教程

今天看一哥们的博客,突然看到getopts也能在shell中也能使用(在C语言中常用getopt或者getopt_long),呵呵,其实只是自己的知识浅陋!下面引用他的文章来解释shell中的getopts。
getopts一般格式为:getopts option_string variable

指定变量取值,即在option_string中将一个冒号放在选项后。但当冒号放在第一个选项时,代表其作为一个选项存在,具体含意为如果某选项设置为取值传递但却未传值时,返回该选项后的信息,若未添加此选项则默认系统也会返回一个错误信息,只是错误信息提示并不明确。
如getopts ahfvc: option表明选项a、h、f、v可以不加实际值进行传递,而选项c必须取值。使用选项取值时,必须使用变量OPTARG保存该值。
用法例:

#!/bin/bash

if [ $# -lt 1 ]
then
    echo "there is no option";
else
    while getopts ":Iti:s:v" opt;
    do
        case $opt  in
        I)
                echo "option is I "
        ;;

        t)
                echo "option is t "
        ;;

        i)
                ii=$OPTARG;
                echo "option is i,the value is $ii";
        ;;

        s)
                ss=$OPTARG;
                echo "option is s ,the value is $ss";
        ;;

        v)
                echo "option is v \n";
        ;;

        :)
                echo ">>> Error: '-$OPTARG' requires an argument"
        ;;

        ?)
                paralist=-1;
                echo ">>> Error: '-$OPTARG' not supported,please input valid argument [Itisv]"
        ;;
        esac
        done
fi

下面给出几个执行的例子:
(1)sh datediff.sh -i 1 -I -v
option is i,the value is 1
option is I
option is v \n

(2)sh datediff.sh -s -i 1
option is s, the value is -i //取s选项后的值

(3)sh datediff.sh -s //选项中有前置冒号
>>> Error: '-s' requires an argument

sh datediff.sh -s //去除选项中的前置冒号后的输出
datediff.sh: option requires an argument -- s
>>> Error: '-' not supported,please input valid argument [Itisv]

到零度科技查看原文:http://www.ldisp.com/a/linux/2014/shell-getopts.shtml

上一篇:Socks5 一键安装包(已测试兼容Debian/Centos)
下一篇:shell脚本执行传递参数的方式-getopts

 
了解零度?

零度科技主营全球服务器租用,如果您有服务器租用需求请联系

海外服务器租用

推荐香港、美国、韩国。提供站群服务器、高防服务器租用

海外特价服务器

关注零度特价服务器频道,了解全球特价服务器。

0

业务咨询

    技术服务

      特价活动
        全站搜索
        热门搜索:
        会员
        0通知
        客服
        0特价
        搜索
        TOP
        香港高防服务器,远程桌面,韩国服务器,nginx,反向代理