教程集 www.jiaochengji.com
教程集 >  脚本编程  >  shell  >  正文 shell技巧之使用getopts

shell技巧之使用getopts

发布时间:2014-09-17   编辑:jiaochengji.com
我们在写sh的脚本时,常常需要在运行时输入一些数据。大家可能已经了解过如何使用基本的$*,执行的情况,大概就是$0 $1 $2 $3…… 那么,那些系统命令里的参数又是如何做出来的呢?

我们在写sh的脚本时,常常需要在运行时输入一些数据。
大家可能已经了解过如何使用基本的$*,执行的情况,大概就是$0 $1 $2 $3……
那么,那些系统命令里的参数又是如何做出来的呢?
我们如何在自己的脚本中实现$0-$1的效果呢?这就是getopts的作用了。

来看一个例子:
 

复制代码 代码如下:
#!/bin/bash
echo "OPTIND starts at $OPTIND"
while getopts ":pq:" optname
do
    case "$optname" in
    "p")
        echo "Option $optname is specified"
        ;;
    "q")
        echo "Option $optname has value $OPTARG"
        ;;
    "?")
        echo "Unknown option $OPTARG"
        ;;
    ":")
        echo "No argument value for option $OPTARG"
        ;;
    *)
        # Should not occur
        echo "Unknown error while processing options"
        ;;
    esac
    echo "OPTIND is now $OPTIND"
done

注解:
在使用getopts命令时,shell会自动产生两个变量 OPTIND 和 OPTARG。
I)、OPTIND初始值为1,其含义是下一个待处理的参数的索引。
只要存在,getopts命令返回true,所以一般getopts命令使用while循环;

II)、OPTARG是当getopts获取到其期望的参数后存入的位置。而如果不在其期望内,则$optname被设为?并将该意外值存入OPTARG;
如果$optname需要拥有具体设置值而实际却没有,则$optname被设为:并将丢失设置值的optname存入OPTARG;
对于$optname,可以用后标:来表示是否需要值;而前标:则表示是否开启静默模式。

您可能感兴趣的文章:
shell技巧之使用getopts
学习shell中的getopts
getopts 获取 处理 命令行选项
Linux shell输入处理简介 shell命令行参数
linux shell命令行选项与参数用法详解
bash shell命令行选项与参数处理
使用getopt处理shell脚本的参数实例学习
shell脚本命令行参数用法简介
photoshop关于弧线笔画处理技巧分享
Photoshop两个高大上的磨皮技巧分享

[关闭]
~ ~