繁体   English   中英

在 Bash 中使用 getopts

[英]Using getopts in Bash

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

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允许用户能够使用 HELP 以指导如何使用脚本和另一个以h开头但类似于-hxx的标志x是什么。

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

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

有关详细信息,请参阅: 使用 getopts 处理长短命令行选项

#! /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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM