问题标签 [getopts]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
101 浏览

bash - bash中的Getopts没有选择选项

我有一个问题,当我选择一个选项时,例如 ./test.sh -f 它应该打印“mel”,但它会读取所有代码。

它如何进入 if 条件并与其他参数一起传递?

0 投票
1 回答
298 浏览

bash - Bash:getopts - 忽略选项?

有一些脚本与getopts. 它包括下一个:

但是 - 当我使用选项运行它时-x-c我得到了:

如果我删除:- 它可以正常工作:

我做错了什么?谢谢。

0 投票
1 回答
61 浏览

linux - 收集 shell 中的所有选项

我正在尝试转发收集到的所有选项,以便在 shell 脚本中的另一个命令中使用。

例如,如果脚本运行如下:

在主

  1. getopts 是.:o.:t.:k.:r(当前运行中未使用 r)
  2. 运行另一个脚本,所有用于的选项都应该用于内部脚本

我希望使用所有 ( -o -t -k) 或任何其他选项组合条目 - 我该怎么做?

0 投票
3 回答
549 浏览

bash - 如何制作一个可以通过位置和命名参数接受信息的通用 Bash 函数

我正在编写大量的 Bash 函数,这些函数能够从使用位置参数命名参数(由 提供getopts)传递的命令行获取不同的信息。这个想法是位置参数主要用于快速和直接的人工控制,而命名参数主要用于其他功能的清晰度和控制。为了说明我的想法,考虑一个可以从一件事转换为另一件事的函数。从广义上讲,可以在快速模式或高级模式中使用此功能。在快速模式中,指定的参数很少,通常是位置参数,而在高级模式中,可以指定许多参数,通常是命名参数。举些例子...

快速模式

可以通过以下方式使用此模式:

它使用内部假设和自主进行的测量将一个文件转换为另一个文件。

高级模式

可以通过以下方式使用此模式:

此模式也可以通过以下方式使用:

请注意,-v不接受任何参数。它只是一个选项(指定诸如详细程度之类的内容)。


因此,这种情况下的逻辑是假定第一个位置参数是,fileName1并且假定第二个位置参数是,fileName2 除非使用-ior-o选项指定这些文件名中的任何一个,在这种情况下使用它们是因为它们是给定的更高的优先级(忽略第一个和第二个位置参数)。

我要求以尽可能一般的方式实现这些类型的需求的建议和指导,因为这种方法将应用于包含 150 多个函数的库。

0 投票
1 回答
243 浏览

bash - 如何在 Bash 中生成 getopts 不可接受的参数列表?

假设我正在getopts使用选项字符串 ":a:b" 在 Bash 脚本中运行,并且我提供了以下命令行参数:

“foo”的实例是该选项的预期参数,a并且该选项b没有预期参数。但是,“bar”的实例和“zappo”的实例都是不可接受的getopts。运行后getopts,如何回显包含所有不可接受参数列表的变量?我怎样才能生成列表“bar bar zappo”?谢谢!

为了您的方便,这里有一些代码:

0 投票
2 回答
1133 浏览

bash - 如何在 Bash 中使用 getopts 允许非可选参数位于可选参数前面?

我知道如何在 Bash 中使用 getopts 处理可选参数

但是如果我的脚本期望./script.sh arg1 [options],我如何告诉getopts跳过 arg1?

如我所见,如果将论点放在最后一个位置,我可以处理该论点。我需要什么“正则表达式”getopts才能让我的位置参数位于可选参数之前?

How to allow non-option arguments in any order to getopt 中的建议?似乎正在重新排列论点。

0 投票
2 回答
617 浏览

regex - 使用正则表达式和 [[ ]] 解析 OPTARG 内部案例

因此,我正在设置一个 bash 脚本,并希望使用 getopts 将参数解析为某些标志。举一个最小的例子,考虑一个带有标志 -M 的脚本,它以 y 或 n 作为参数。如果我使用以下代码:

我得到以下信息:

但是,如果我改用以下代码

我得到:

为什么不起作用minimalExample.sh

0 投票
2 回答
298 浏览

parameters - 使用 AWK 和 getopts 解析非 POSIX 命令行参数

我正在尝试编写一个可以以非 POSIX 方式接受命令行参数的 Bash 脚本。具体来说,我想以标准方式解析命令行参数,getopts同时使用选项字符串构建一个意外的命令行参数列表。getopts下面的代码注释中显示了以我描述的方式进行的示例命令行参数解析。我正在寻找解决方案,但我的脚本只能识别唯一意外参数,而我需要识别所有意外参数。我很感激有关解决此问题的指导(可能通过巧妙的 AWK 脚本编写)。非常感谢您提供的任何帮助。

0 投票
1 回答
1352 浏览

bash - 如何使用自定义变量而不是 ${1}、${2} 等将参数传递给 Bash getopts

我想在 Bash 变量中指定参数(选项和参数)并将该变量传递getopts给解析而不是通常的变量${1}${2}。我不知道该怎么做。通常在 的文档中getoptsgetopts语法描述如下:

我知道它optstring表示getopts有关如何解析参数的说明,并且name是一个变量,用于存储正在考虑的当前信息getopts(例如选项参数的值),但我不知道[args]它的意图是什么。这是一种在getopts不使用标准命令行变量的情况下传递参数的方法吗?如果是,我怎么能使用这个设施?如果不是,那么将存储在空格分隔的 Bash 变量中的参数传递给 的好方法是什么getopts?谢谢!

0 投票
2 回答
1336 浏览

bash - Bash 手动输入和移位位置参数

(很明显,这个问题主要涉及如何将信息应用于手动定义的数组getopts以及如何将 ashift应用于手动定义的数组。

我正在为一些 Bash 函数的启动编写一个过程,该过程以通常的getopts方式解析函数的参数,同时解析意外的参数(通过循环getopts处理多次)。

在下面的代码中可以看到一个小函数process_arguments(),它基本上包含getopts处理和shift作用于位置参数的结束操作。因为这个参数解析的整个过程是针对函数而不是脚本的,所以我想将函数中包含的处理移到脚本process_arguments的主while循环中。这涉及对函数中过程的输入和输出信息的修改。

处理的输入信息getopts可以传递到getopts数组中args

但是,我不确定如何更改过程的输出。目前,它移动位置参数,然后打印位置参数(echo "${@}")。

那么,问题...

  • 这种getopts args方法是将信息传递给程序的正确方法吗?
  • 如何将 应用于shift传递给的参数,getopts然后如何将这些移位的参数输出到脚本处理的其余部分?

谢谢你的帮助。我欢迎任何其他指导。总体目标是删除该函数process_arguments()并将其功能合并到主“while”循环中。