/ bin / sh:使用getopt解析长选项,格式为--parameter ='value'

400猫

我有以下代码段可解析中的长和短选项/bin/dash

该选项-n|--dry-run不带参数。--exclude应采用形式的字符串--exclude='foo'要进一步使事情复杂化,--exclude没有短的选择。

当我使用时script.sh --exclude以下代码有效,但是当我使用时script.sh --exclude='foo',出现错误:

option '--exclude' doesn't allow an argument

这是我的代码:

#!/bin/sh

 OPTS=$(getopt --options 'n' --long 'exclude,dry-run' --name "$0" -- "$@")

 if [ $? != 0 ] ; then
    printf "\n\033[1;31m Error:\033[0m Failed to parse options...exiting.\n\n"
    exit 1
 fi

 eval set -- "$OPTS"

 unset OPTS

# extract options and their arguments into variables.
 while true ; do
    case "$1" in

    --exclude )
        EXCLUDE="y"
        shift
        ;;

    -n | --dry-run )
        DRYRUN="y"
        shift
        ;;

    -- )
        shift
        break
        ;;

    *)
        printf "\n\033[1;31m Error:\033[0m Invalid option: \033[1;31m-$OPTARG\033[0m\n\n"
        exit 1
        ;;

    esac
 done


 echo \$\@ = $@

我必须更改什么才能使用--exclude='foo'

切普纳

您需要--exclude通过:在名称后附加a来指定可以接受参数的参数

OPTS=$(getopt --options 'n' --long 'exclude:,dry-run' --name "$0" -- "$@")

从手册页:

-l,--longoptions longopts

长(多字符)选项可以识别。通过用逗号分隔名称,可以一次指定多个选项名称。可以多次给此选项,因为longopts是累积的。longopts中的每个长选项名称都可以在其后跟一个冒号,以表示它具有必需的参数,在其后跟两个冒号,以表示其具有可选参数。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

/ bin / sh:/ usr / bin / wkhtmltopdf:找不到

来自分类Dev

如何让 /bin/sh 指向 /bin/bash?

来自分类Dev

Crontab / bin / sh语法

来自分类Dev

/ bin / sh笨拙的行为

来自分类Dev

根据为 value_counts 指定的 bin 对另一列执行聚合

来自分类Dev

对 asp-route-parameter 使用 hiddenfield-value

来自分类Dev

如何使用.bin文件

来自分类Dev

使用.bin文件

来自分类Dev

使用.bin文件

来自分类Dev

如何使用.bin文件

来自分类Dev

临时更改/ bin / sh链接

来自分类Dev

问题理解系统(“ / bin / sh”)

来自分类Dev

Shebang选项'#!/ bin / csh -f'

来自分类Dev

/ bin / sh VS / bin / bash中的Unicode字符

来自分类Dev

/ bin / sh是不指向/ bin / bash的符号链接

来自分类Dev

/ bin / sh是不指向/ bin / bash的符号链接

来自分类Dev

/ bin / sh VS / bin / bash中的Unicode字符

来自分类Dev

/ bin / bash在哪里更改为/ bin / sh?

来自分类Dev

#!/ bin / sh和#!/ bin / bash有什么区别?

来自分类Dev

/ bin / sh,/ bin / bash和/ bin / dash都坏了,我该如何再次安装它们

来自分类Dev

使用可变字段文件格式解析符号分隔文件,格式为key = value的可变字段

来自分类Dev

如何通过/ bin / sh解析HTTP标头?

来自分类Dev

如何使用#!/ bin / sh(POSIX sh)按名称查找变量?

来自分类Dev

如何使用#!/ bin / sh(POSIX sh)按名称查找变量?

来自分类Dev

归档时命令 /bin/sh 失败,退出代码为 1

来自分类Dev

使用/ usr / local / bin / mpd代替/ usr / bin / mpd

来自分类Dev

R:使用bin计数和bin中断获取直方图

来自分类Dev

在/ bin / bash中使用的printf

来自分类Dev

在/ bin / bash中使用的printf