Linux

关注公众号 jb51net

关闭
首页 > 网站技巧 > 服务器 > Linux > Linux-getopt命令

Linux-getopt命令用法及说明

作者:wolfengi

这篇文章主要介绍了Linux-getopt命令用法及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

简介

getopt命令可以接受一系列任意形式的命令行选项和参数,并自动将它们转换成适当的格式。

格式说明

getopt三种使用方式

# 第一种:无法处理带有空格的参数
getopt optstring parameters
# 第二种:可以处理带有空格的参数,但是需要结合eval使用
getopt [options] [--] optstring parameters
# 第三种:结合eval既可以处理带有空格的参数,也可以定义长选项(一个字母为短选项,一个字母以上是长选项)
getopt [options] -o|--options optstring [options] [--] parameters

理解:

通过optstring自定义选项参数字符串格式化传入的parameters(参数),进行输出

要点

双破折线在optstring前和optstring后的区别

选项后一个冒号(:)、两个冒号、没冒号的区别

多个自定义选项参数之间的分隔

长短选项执行时注意事项

长选项

使用 -o 或 -l 时,双破折线不能用在optstring前面,需要写在optstring之后(如第三种写法)

getopt命令报错时会继续执行后面的代码,实际使用时需要使用 $? 判断命令执行结果进行处理( 将getopt与eval、set分离处理)

TPS:还有更多细节, 可以实际在Linux命令行进行测验。如使用第三种写法(结合eval、set使用)则基本不会存在问题

使用

Example:

#!/bin/bash
#eval set -- $(getopt -- a:b:s:u "$@")
cmd_getopt=$(getopt -n $0 -o m::f:: -l mark::,file:: -- "$@")
[ $? -ne 0 ] && exit 1
eval set -- "$cmd_getopt"
while [ "$1" ];do
  case $1 in
    -m|--mark)
      mark="$2"
      shift 2;;
    -f|--file)
      file="$2"
      shift 2;;
    --)
      shift
      break;;
    *)
    echo "Usage [-m|-f] operate"
    exit 1;;
  esac
done
# 查看结果,可根据实际场景调用case中定义的变量
echo mark -- $mark
echo file -- $file

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文