处理用户输入与显示数据------------(更高级的getopts命令标准化选项)

Posted WEL测试

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了处理用户输入与显示数据------------(更高级的getopts命令标准化选项)相关的知识,希望对你有一定的参考价值。

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: opt
do
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"
esac
done

第4章

         getopts命令知道何时停止处理选项,将参数留给用户处理。getopts每个处理选项,环境变量OPTIND的值会增加1。当到达getopts处理的末尾时,可以使用shift命令和OPTIND值进行操作来移动到参数。         

#!/bin/bash
#使用getopts与OPTARG组合
while getopts :ab:cd: opt
do
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"
esac
done
echo "选项个数:$OPTIND"
echo "选项个数:$[ $OPTIND-1 ]"
#命令行参数左移$[ $OPTIND-1 ]位
shift $[ $OPTIND-1 ]

count=1
for par in $@
do
echo "Parameter #$count=$par"
count=$[ $count + 1 ]
done

第4章

4.2.4 标准化选项

         创建脚本时,用户拥有对shell脚本的控制权。完全由用户决定选择使用哪些字母选项,以及如何使用它们。但是,在Linux世界中有一些字母选项具有某种标准含义。如果在shell脚本中使用这些选项,会使脚本变得更加便于使用。下图给出Linux中使用的一些命令行选项的常用含义:

         第4章


以上是关于处理用户输入与显示数据------------(更高级的getopts命令标准化选项)的主要内容,如果未能解决你的问题,请参考以下文章

处理用户输入与显示数据------------(从键盘输入的命令read,对输入计时计数)

处理用户输入与显示数据------------(读取参数读取程序名称测试参数)

处理用户输入与显示数据------------(参数计数获取所有数据)

处理用户输入与显示数据------------(移位shift命令行参数选项)

处理用户输入数据验证的更有效方法?

处理用户输入与显示数据------------(创建本地临时文件在/temp中创建临时文件创建临时目录tee命令)