Your Ad Here
首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 编程语言 > 其他编程语言 > getopts的学习笔记
【标  题】:getopts的学习笔记
【关键字】:getopts
【来  源】:http://blog.chinaunix.net/article.php?articleId=57505&blogId=6776

getopts的学习笔记

Your Ad Here bash中使用getopts来实现选项操作,入门是简单的,但问题从不因为你去钻研而消失,就像程序中的bug,呵呵。

getopts的基本用法:
while getopts "a:bc" opt;do
    case $opt in
         a ) process of a;;//$OPTARG is the a's arg
         b ) process of b;;
         c ) process of c;;
         ? ) echo "info"
              exit 1;;
     esac
done
shift $(($OPTIND - 1))
other code.......
这里"a:bc"表明选项的结构,:表示其前面的选项带有参数,这个例子就是说该脚本包含选项abc,其中a带有参数,如下:
-a arg -b -c或者可以写成-a arg -bc
这里变量$OPTARG存储相应选项的参数,而$OPTIND总是存储原始$*中下一个要处理的元素位置。
下面是一个简单例子(脚本为test):
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))
echo
echo $*
运行:
#./test -a 12 -bc 34
-a 12 -bc 34
12
3
b 3
c 4
4
./test
34
可见,通过shift $(($OPTIND - 1))的处理,$*中就只保留了除去选项内容的参数,可以在其后进行正常的shell编程处理了。

问题:getopts可不可以用于函数function,经过实验我发现结果很奇怪,这里面涉及function在shell中的具体展开问题。

终端彩色控制码对照表:【上一篇】
Shell编程经验总结之―编程习惯:【下一篇】
【相关文章】
没有相关文章
【随机文章】
  • Windows XP 中如何对脱机文件执行加密操作
  • iptables 下的 vsftp ftp: connect: No route to host
  • 网络学习笔记
  • VC++中文FAQ宝库
  • 随机取表中数据(随机函数)
  • 一些中斷號`.`
  • delphi写asp组件时返回类型造成的问题
  • 从把流式对象隐式转换成指针的行为中吸取经验
  • 上下文无关文法和语言
  • 征集答案
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 bbb软讯网络 All Rigths Reserved.