shell之getopts

getopts 是一个常用于解析命令行选项的bash内建命令。它的基本语法是:

	
getopts optstring name [arg...]

  • optstring列出了对应的Shell Script可以识别的所有参数。比如:
    • 如果 Shell Script可以识别-a,-f以及-s参数,则optstring就是afs;
    • 如果对应的参数后面还跟随一个值,则在相应的optstring后面加冒号。比如,a:fs 表示a参数后面会有一个值出现,-a value的形式。另外,getopts执行匹配到a的时候,会把value存放在一个叫OPTARG的Shell Variable当中。
      -如果 optstring是以冒号开头的,命令行当中出现了optstring当中没有的参数将不会提示错误信息。
  • name表示的是参数的名称,每次执行getopts,会从命令行当中获取下一个参数,然后存放到name当中。如果获取到的参数不在optstring当中列出,则name的值被设置为?。命令行当中的所有参数都有一个index,第一个参数从1开始,依次类推。 另外有一个名为OPTIND的Shell Variable存放下一个要处理的参数的index。
#!/bin/bash
 
while getopts "drp:f" OPTION
do
  case "$OPTION" in
    d)
      echo "Option d is selected."
      ;;
    r)
      echo "Option r is selected."
      ;;
    p)
      echo "Option p is selected with value $OPTARG."
      ;;
    f)
      echo "Option f is selected."
      ;;
    \?)
      echo "Invalid option: -$OPTARG"
      exit 1
      ;;
  esac
done

在这个脚本中, O P T I N D 变量用于保存下一个要处理的参数的索引。 OPTIND 变量用于保存下一个要处理的参数的索引。 OPTIND变量用于保存下一个要处理的参数的索引。OPTARG 用于保存选项参数的值。
注意,如果你的选项字符串中的字符后面有冒号(:),那么对应的选项参数将会被放入变量 OPTARG 中。在处理这样的选项时,你应该立即使用 O P T A R G 中的值,因为在处理下一个选项时, OPTARG 中的值,因为在处理下一个选项时, OPTARG中的值,因为在处理下一个选项时,OPTARG 的值可能会被覆盖。
在上面的脚本中,d、r 和 f 是简单选项,不需要参数,而 p 需要一个参数。当选项后面紧跟了参数时,$OPTARG 变量会包含这个参数的值。
当解析到一个未定义的选项时,getopts 命令会设置返回状态为 1,并将问号字符(?)存储在 $OPTION 中。这种情况下,脚本会打印一条错误消息,并退出。
这个脚本可以处理 -d -r -p some_arg -f 这样的命令行参数,但不能处理 --option 这样的长参数形式。如果需要处理长参数形式的选项,你可能需要使用不同的方法,比如 getopt 命令或者完全自定义解析逻辑。

  • 12
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员的修养

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值