【发布时间】:2025-11-23 00:25:02
【问题描述】:
我正在编写大量的 Bash 函数,这些函数能够从使用位置参数或命名参数(由getopts 提供)传递的命令行获取不同的信息。这个想法是位置参数主要用于快速和直接的人工控制,而命名参数主要用于其他功能的清晰度和控制。为了说明我是如何考虑这个问题的,考虑一个可以从一个事物转换为另一个事物的函数。从广义上讲,可以在快速模式或高级模式中使用此功能。在快速模式中,指定的参数很少,通常是位置参数,而在高级模式中,可以指定许多参数,通常是命名参数。比如……
快速模式
可以通过以下方式使用此模式:
function fileName1 fileName2
它使用内部假设和自主进行的测量将一个文件转换为另一个文件。
高级模式
可以通过以下方式使用此模式:
function -i fileName1 -o fileName2 -m -r 100 -v
此模式也可以通过以下方式使用:
function -m -v fileName1 fileName2 -r 100
请注意,-v 不接受任何参数。它只是一个选项(指定诸如详细程度之类的内容)。
因此,这种情况下的逻辑是第一个 positional 参数假定为fileName1,第二个位置参数假定为fileName2 除非 使用-i 或-o 选项指定这些文件名中的任何一个,在这种情况下使用它们,因为它们被赋予了更高的优先级(并且忽略了第一个和第二个位置参数)。
我在以尽可能通用的方式实现这些类型的要求时寻求建议和指导,因为这种方法将应用于包含 150 多个函数的库。
【问题讨论】:
-
否:您提到的问题涉及对两种类型的论点使用中的一种的识别,而当前问题涉及为接收相同信息而设计的论点的优先级。
-
啊,在仔细阅读了前面的问题之后,我现在看到了区别。抱歉,我只掩盖了你的第一个问题。
标签: bash arguments options getopt getopts