处理用户输入与显示数据------------(getopt命令)

临文乍了了,彻卷兀若无。这篇文章主要讲述处理用户输入与显示数据------------(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命令)】


    推荐阅读