侧边栏壁纸
博主头像
落叶人生博主等级

走进秋风,寻找秋天的落叶

  • 累计撰写 130562 篇文章
  • 累计创建 28 个标签
  • 累计收到 9 条评论
标签搜索

目 录CONTENT

文章目录

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

2023-11-22 星期三 / 0 评论 / 0 点赞 / 62 阅读 / 4094 字

4.2.3 使用getopt命令 getopt命令是个不错的工具,在处理命令行选项和参数时非常方便。它对命令行参数进行重现组织,使其更便于在脚本中解析。 1.命令格式 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/bashset -- `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  #所有命令行参数值左移一位  shiftdoneecho "输出选项参数"count=1for para in $@do   echo "参数#$1:$para"   count=$[ $count+1 ]done

getopt命令不能很好的处理带有空格的参数值。它将空格解析为参数分隔符,而不是将双引号引起来的两个值合并为一个参数。

广告 广告

评论区