位置参数( 、 等)和选项(和/或参数)都$1
直接$2
写在命令之后,那么解释如何区分它们的定义或措辞是什么?
换句话说,如何正式解释两者之间的区别位置参数和一个选项(和/或论证)?
答案1
选项(通常也称为“标志”或“开关”)是命令行参数的一种类型。命令行参数是实用程序或 shell 函数的命令行上出现的单个单词(或带引号的字符串)。
在使用一定数量的参数调用 shell 脚本或 shell 函数时,每个单独的参数都将可用作脚本或函数内的位置参数。
术语:
一个“论证”可以是
- 一个“选项”(类似于
-a
,但前提是实用程序将其识别为选项), - 一个“选项参数”(就像
foo
if-a foo
是-a
一个带有参数的选项),或者 - 一个“操作数”(一个非选项参数,也不是一个选项参数,
foo
例如-a foo
if-a
does不是采用选项参数)。
上述所有内容的真实示例(使用 GNU mv
):
mv -t targetdir -f file1 file2
- 参数:
-t
、targetdir
、-f
、file1
和file2
- 选项:
-t
和-f
- 选项参数:
targetdir
- 操作数:
file1
和file2
.
从POSIX 定义:
在 shell 命令语言中,[参数是]传递给实用程序的参数,相当于由 exec 函数之一创建的 argv 数组中的单个字符串。参数是命令名称后面的选项、选项参数或操作数之一。
[选项是]命令的参数,通常用于指定实用程序默认行为的更改。
[选项参数是]跟随某些选项的参数。在某些情况下,选项参数包含在与选项相同的参数字符串中,在大多数情况下,它是下一个参数。
[操作数是]命令的参数,通常用作向实用程序提供完成其处理所需的信息的对象。操作数通常遵循命令行中的选项。
shell 脚本或 shell 函数中的位置参数将是脚本或函数命令行上给出的参数,无论参数是选项、选项参数还是操作数。
位置参数也可以使用设置
set -- something "something else" bumblebees
这会将$1
、$2
和$3
设为三个字符串并清除任何其他位置参数。
在这种情况下,位置参数不再与实用程序命令行上传递的参数有任何关系。
也可以看看: