第4章 处理用户输入与显示数据------------(更高级的getopts命令、标准化选项)
来源:互联网 发布:网络剧《余罪》傅国生 编辑:程序博客网 时间:2024/06/13 05:40
4.2.4 更高级的getopts命令
getopt为在命令行中找到的所有待处理选项和参数生成一个输出,而与getopt不同,getopts命令顺序的对现有的shell参数变量进行处理。
每调用一次getopts,它只处理在命令中监测到的参数中的一个。处理完所有测试后,以大于零的退出状态退出。因此,getopts非常适宜用在循环中解析所有命令行参数。getopts命令的格式为:getopts optstring variable。其中optstring值与getopt命令中使用的相似。在选项字符串中列出有效选项字母,如果选项字母需要参数值后面加一个冒号。如果要禁止输出错误消息,那么使选项字符串以冒号开头。getopts命令将当前参数放在命令行中定义的variable中。
getopts命令使用两个环境变量。环境变量OPTARG中包含需要参数值的选项要使用的值。环境变量OPTIND包含的值表示getopts停止处理时在参数列表中的位置。这样,处理完选项后可以继续处理其他命令行参数。
当getopts命令解析命令行选项时,会将打头的破折号去掉,所以在case定义中不需要破折号。getopts命令具有许多很好的特性。首先,在参数值中可以包含空格;另一个是选项字母和参数值中间可以没有空格;还有一个好特性是将在命令行中找到的未定义的选项都绑定为单一的输出----问号,任何在选项字符串值中未定义的选项字母都将以问号形式传递给代码。
#!/bin/bash#使用getopts与OPTARG组合while getopts :ab:cd: optdo case $opt in a)echo "Found -a option";; b)echo "Found -b option,with value $OPTARG";; c)echo "Found -c option";; d)echo "Found -d option,with value $OPTARG";; *)echo "Unknow options:$opt" esacdone
getopts命令知道何时停止处理选项,将参数留给用户处理。getopts每个处理选项,环境变量OPTIND的值会增加1。当到达getopts处理的末尾时,可以使用shift命令和OPTIND值进行操作来移动到参数。
#!/bin/bash#使用getopts与OPTARG组合while getopts :ab:cd: optdo case $opt in a)echo "Found -a option";; b)echo "Found -b option,with value $OPTARG";; c)echo "Found -c option";; d)echo "Found -d option,with value $OPTARG";; *)echo "Unknow options:$opt" esacdoneecho "选项个数:$OPTIND"echo "选项个数:$[ $OPTIND-1 ]"#命令行参数左移$[ $OPTIND-1 ]位shift $[ $OPTIND-1 ]count=1for par in $@do echo "Parameter #$count=$par" count=$[ $count + 1 ]done
4.2.4 标准化选项
创建脚本时,用户拥有对shell脚本的控制权。完全由用户决定选择使用哪些字母选项,以及如何使用它们。但是,在Linux世界中有一些字母选项具有某种标准含义。如果在shell脚本中使用这些选项,会使脚本变得更加便于使用。下图给出Linux中使用的一些命令行选项的常用含义:
- 第4章 处理用户输入与显示数据------------(更高级的getopts命令、标准化选项)
- 第4章 处理用户输入与显示数据------------(移位shift、命令行参数选项)
- 第4章 处理用户输入与显示数据------------(从键盘输入的命令read,对输入计时计数)
- 第4章 处理用户输入与显示数据------------(getopt命令)
- 第4章 处理用户输入与显示数据------------(参数计数、获取所有数据)
- 第4章 处理用户输入与显示数据------------(默读与文件读取)
- shell脚本中用getopts处理用户输入选项和参数
- 第4章 处理用户输入与显示数据------------(读取参数、读取程序名称、测试参数)
- 第4章 处理用户输入与显示数据------------(禁止命令输出、lsof命令、关闭文件描述符、创建读取/写入文件描述符)
- 第4章 处理用户输入与显示数据------------(创建本地临时文件、在/temp中创建临时文件、创建临时目录、tee命令)
- 第4章 处理用户输入与显示数据------------(标准文件描述符、STDIN/STDERR/STDOUT、临时重定向、永久重定向exec)
- 数据的标准化处理
- 数据的标准化处理
- 第14章 处理用户输入
- shell 命令行选项处理方法 getopts
- Matlab中数据的标准化处理
- matlab zscore函数 数据的标准化处理
- 数据标准化处理的“道”和“术”
- Date类型时间对比
- pdf加水印
- 第十五周 项目1-验证算法---哈希表及其运算的实现
- 第十五周-项目三 B-树的基本操作
- 第十五周项目1-验证算法(1-哈希表查找及冲突解决相关算法)
- 第4章 处理用户输入与显示数据------------(更高级的getopts命令、标准化选项)
- 第十三周 项目1:Prim算法的验证
- 第十三周项目2 Kruskal算法的验证
- C语言位运算符
- 第15周项目1-验证算法
- Android底层开发经验
- coredata实例分析
- 第十四周项目1(1)——验证折半算法
- 到期日计算,账龄报表