shell中getopt/getopts的使用 getarg和getind意义
来源:互联网 发布:大数据发展状况 编辑:程序博客网 时间:2024/06/05 10:27
getopts配合case来进行操作时有两个隐含变量:一个是OPTARG,用来取当前选项的值,另外一个是OPTIND,代表当前选项在参数列表中的位移。OPTIND是一个特殊的变量,它的初始值是1,每次getopts处理完一个命令参数后就递增它,得到getopts要处理的下一个参数。
getopt is /usr/bin/getopt
[admin@intlqa142055x ~]$ type getopts
getopts is a shell builtingetopts不能直接处理长的选项(如:--prefix=/home等)
关于getopts的使用方法,可以man bash 搜索getopts
getopts 有两个参数,第一个参数是一个字符串,包括字符和“:”,每一个字符都是一个有效的选项,如果字符后面带有“:”,表示这个字符有自己的参数。 getopts从命令中获取这些参数,并且删去了“-”,并将其赋值在第二个参数中,如果带有自己参数,这个参数赋值在“OPTARG”中。提供getopts的shell内置了OPTARG这个变变,getopts修改了这个变量。
这里变量$OPTARG存储相应选项的参数,而$OPTIND总是存储原始$*中下一个要处理的元素位置。
while getopts ":a:bc" opt #第一个冒号表示忽略错误;字符后面的冒号表示该选项必须有自己的参数
代码实例(getopts.sh):
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))
#通过shift $(($OPTIND - 1))的处理,$*中就只保留了除去选项内容的参数,可以在其后进行正常的shell编程处理了。
echo $0
echo $*
执行命令:./getopts.sh -a 11 -b -c
-a 11 -b -c
11
3
b 4
c 5
5
./getopts.sh
>cat test4
#!/bin/bash
while getopts "ab:cd:" Option
# b and d take arguments
#
do
case $Option in
a) echo -e "a = $OPTIND";;
b) echo -e "b = $OPTIND $OPTARG";;
c) echo -e "c = $OPTIND";;
d) echo -e "d = $OPTIND $OPTARG";;
esac
done
shift $(($OPTIND - 1))
>sh test4 -a -b foo -cd bar
a = 2
b = 4 foo
c = 4
d = 6 bar
>sh test4 -ab foo
a = 1
b = 3 foo
>sh test4 -a -c
a = 2
c = 3
getopts (Shell内置命令)
处理命令行参数是一个相似而又复杂的事情,为此,C提供了getopt/getopt_long等函数,C++的boost提供了Options库,在shell中,处理此事的是getopts和getopt.
先说一下getopts/getopt的区别吧,getopt是个外部binary文件,而getopts是shell builtin。
getopt is /usr/bin/getopt
[admin@intlqa142055x ~]$ type getopts
getopts is a shell builtingetopts不能直接处理长的选项(如:--prefix=/home等)
关于getopts的使用方法,可以man bash
getopts 有两个参数,第一个参数是一个字符串,包括字符和“:”,每一个字符都是一个有效的选项,如果字符后面带有“:”,表示这个字符有自己的参数。 getopts从命令中获取这些参数,并且删去了“-”,并将其赋值在第二个参数中,如果带有自己参数,这个参数赋值在“OPTARG”中。提供getopts的shell内置了OPTARG这个变变,getopts修改了这个变量。
这里变量$OPTARG存储相应选项的参数,而$OPTIND总是存储原始$*中下一个要处理的元素位置。
while getopts ":a:bc" opt
代码实例(getopts.sh):
echo $*
while getopts ":a:bc" opt
do
done
echo $OPTIND
shift $(($OPTIND - 1))
#通过shift $(($OPTIND - 1))的处理,$*中就只保留了除去选项内容的参数,可以在其后进行正常的shell编程处理了。
echo $0
echo $*
-a 11 -b -c
11
3
b 4
c 5
5
./getopts.sh
- shell中getopt/getopts的使用 getarg和getind意义
- shell 脚本中getopt 和 getopts 的区别
- Shell中使用getopt、getopts命令
- linux bash shell 中getopts 命令 和 python 中 getopt 函数的比较总结
- Shell的getopts和C语言的getopt对比
- Shell 处理命令行参数 getopts 和 getopt
- 格式化命令行参数getopt和getopts的使用
- C getopt 及 shell getopts
- shell中的getopt与getopts
- getopts 和 getopt 用法简记
- getopt getopts
- shell 中getopts的简单解述
- [shell] getopts使用
- shell getopts使用
- shell 的getopts用法
- shell里的getopts
- shell脚本选项参数处理学习getopts|getopt
- 在shell脚本中使用getopts处理参数
- sudo出现sudo:must be setuid root问题的解决方法
- Android基站定位——单基站定位(二)
- 【Eclipse RCP】 定时清除状态栏信息
- [SQL] MyISAM InnoDB 区别
- js操作json数据
- shell中getopt/getopts的使用 getarg和getind意义
- Linux 为什么存在线程及其使用方法
- Android 屏幕亮度控制问题
- php利用root权限执行shell脚本
- linux内存管理之uboot第一步
- Bigdecimal类型运算
- 软件术语百科——RC版本
- C# 读excel 方法
- 【vim】返回到刚刚编辑的地方