加载中…
个人资料
xubowhucs
xubowhucs
  • 博客等级:
  • 博客积分:0
  • 博客访问:102,025
  • 关注人气:3
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
相关博文
推荐博文
谁看过这篇博文
加载中…
正文 字体大小:

shell的getopts

(2010-12-05 21:51:52)
标签:

shell

getopts

杂谈

分类: Shell

今天看一哥们的博客,突然看到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]

0

阅读 评论 收藏 转载 喜欢 打印举报/Report
前一篇:shell算术运算
后一篇:chkconfig 命令
  • 评论加载中,请稍候...
发评论

    发评论

    以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

    < 前一篇shell算术运算
    后一篇 >chkconfig 命令
      

    新浪BLOG意见反馈留言板 电话:4000520066 提示音后按1键(按当地市话标准计费) 欢迎批评指正

    新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

    新浪公司 版权所有