处理用户输入与显示数据------------(getopt命令)
Posted WEL测试
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了处理用户输入与显示数据------------(getopt命令)相关的知识,希望对你有一定的参考价值。
4.2.3 使用getopt命令
getopt命令是个不错的工具,在处理命令行选项和参数时非常方便。它对命令行参数进行重现组织,使其更便于在脚本中解析。
1.命令格式
getopt命令可以接受任意形式的命令行选项和参数列表,并自动将这些选项和参数转换为适当的格式。命令格式如下:getopt options optstringparameters。选项字符串(optstring)是处理的关键。它定义命令行中的有效选项字母。它还定义那些选项字母需要的参数值。
首先,在选项字符串中列出将在脚本中用到的每个命令行选项字母。然后,在每个需要参数值的选项字母后面放置一个冒号。getopt命令根据定义的选项字符串解析提供的参数。
其中的选项字符串定义了四个有效选项字母,a、b、c和d。还定义选项字母需要一个参数值。当执行getopt命令时,会检测提供的参数列表,然后基于提供的选项字符串对列表进行解析。注意,解析时自动将-cd选项分隔成两个不同的选项,并插入双破折号来分隔行中的额外参数。
如果指定的选项不包含在选项字符串,getopt命令会默认生成一个错误消息。如果想忽略这个错误消息,可以在命令中使用-q选项。注意,getopt命令选项必须列在选项字符串前面。现在就可以在脚本中使用这个命令来处理命令行选项。
2.在脚本中使用getopt
可以在脚本中使用getopt命令格式化为脚本输入的任意命令行选项或参数。这里使用一点小技巧。这个小技巧是将现有的命令行选项和参数替换为getopt命令生成的格式化形式。方法是使用set命令。set命令可以处理shell中的各种变量。set命令的一个选项是双破折号,表示将命令行参数变量替换为set命令的命令行中的值。
于是,这个技巧便是:将原始脚本命令行参数送给getopt命令,然后将getopt命令的输出送给set命令,以便将原始命令行参数替换为通过getopt格式化过的更精细的形式。如下所示:set -- `getopt -q ab:c "$@"` 。现在原始的命令行参数变量就被替换成了getopt命令的输出,getopt命令将命令行参数进行了格式化。
#!/bin/bash
set -- `getopt -q hl:t:a "$@"`
while [ -n "$1" ]
do
case "$1" in
-h) echo "Found the -h options";;
-l) para="$2"
echo "Found the -l options,with the parameter value $para"
shift;;
-a) echo "Found the -a options";;
-t) para=$2
echo "Found the -t options,with the parameter value $para"
shift;;
--) shift
break;;
*) echo "$1 is not options";;
esac
#所有命令行参数值左移一位
shift
done
echo "输出选项参数"
count=1
for para in $@
do
echo "参数#$1:$para"
count=$[ $count+1 ]
done
getopt命令不能很好的处理带有空格的参数值。它将空格解析为参数分隔符,而不是将双引号引起来的两个值合并为一个参数。
以上是关于处理用户输入与显示数据------------(getopt命令)的主要内容,如果未能解决你的问题,请参考以下文章
处理用户输入与显示数据------------(getopt命令)
处理用户输入与显示数据------------(参数计数获取所有数据)
处理用户输入与显示数据------------(移位shift命令行参数选项)
处理用户输入与显示数据------------(更高级的getopts命令标准化选项)