首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Bash中使用getopts

在Bash中使用getopts
EN

Stack Overflow用户
提问于 2019-10-18 14:14:35
回答 1查看 80关注 0票数 2

我想在Bash脚本中使用getopts,如下所示:

代码语言:javascript
运行
复制
while getopts ":hXX:h" opt; do
  case ${opt} in
    hXX ) Usage
      ;;
    h ) echo "You pressed Hey"
      ;;
    \? ) echo "Usage: cmd [-h] [-p]"
      ;;
  esac
done

背后的想法是,我想要有两个标志-h--help,让用户能够使用帮助,以便指导如何使用脚本和另一个标志,它以h开头,但它类似于-hxx,其中x是任何东西。

我如何区分这两个,因为即使我按下--hxx标志,它也会自动执行帮助标志。我认为在getopt中呈现它们的顺序与此无关。

EN

回答 1

Stack Overflow用户

发布于 2019-10-18 14:22:17

‘外部’getopt程序(不是内置在getopts中的bash )支持'--longoptions‘。它可以用作命令行选项的前置处理器,从而可以通过bash内置getopt使用长选项(或其他不支持长选项的程序)。

有关详细信息,请参阅:Using getopts to process long and short command line options

代码语言:javascript
运行
复制
#! /bin/bash

TEMP=$(getopt -l help -- h "$@")
eval set -- "$TEMP"
while getopts h-: opt ; do
        case "$opt" in
                h) echo "single" ;;
                -) case "$OPTARG" in
                        -help) echo "Double" ;;
                        *) echo "Multi: $OPTARG" ;;
                esac ;;
                *) echo "ERROR: $opt" ;;
        esac
done
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58444947

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档