如何区分位置参数和选项?

如何区分位置参数和选项?

位置参数( 、 等)和选项(和/或参数)都$1直接$2写在命令之后,那么解释如何区分它们的定义或措辞是什么?

换句话说,如何正式解释两者之间的区别位置参数一个选项(和/或论证)?

答案1

选项(通常也称为“标志”或“开关”)是命令行参数的一种类型。命令行参数是实用程序或 shell 函数的命令行上出现的单个单词(或带引号的字符串)。

在使用一定数量的参数调用 shell 脚本或 shell 函数时,每个单独的参数都将可用作脚本或函数内的位置参数。

术语:

一个“论证”可以是

  • 一个“选项”(类似于-a,但前提是实用程序将其识别为选项),
  • 一个“选项参数”(就像fooif-a foo-a一个带有参数的选项),或者
  • 一个“操作数”(一个非选项参数,也不是一个选项参数,foo例如-a fooif -adoes不是采用选项参数)。

上述所有内容的真实示例(使用 GNU mv):

mv -t targetdir -f file1 file2
  • 参数:-ttargetdir-ffile1file2
  • 选项:-t-f
  • 选项参数:targetdir
  • 操作数:file1file2.

POSIX 定义:

在 shell 命令语言中,[参数是]传递给实用程序的参数,相当于由 exec 函数之一创建的 argv 数组中的单个字符串。参数是命令名称后面的选项、选项参数或操作数之一。

[选项是]命令的参数,通常用于指定实用程序默认行为的更改。

[选项参数是]跟随某些选项的参数。在某些情况下,选项参数包含在与选项相同的参数字符串中,在大多数情况下,它是下一个参数。

[操作数是]命令的参数,通常用作向实用程序提供完成其处理所需的信息的对象。操作数通常遵循命令行中的选项。

shell 脚本或 shell 函数中的位置参数将是脚本或函数命令行上给出的参数,无论参数是选项、选项参数还是操作数。

位置参数也可以使用设置

set -- something "something else" bumblebees

这会将$1$2$3设为三个字符串并清除任何其他位置参数。

在这种情况下,位置参数不再与实用程序命令行上传递的参数有任何关系。

也可以看看:

相关内容