这些术语之间有什么区别:"选项","参数"和"参数"?在手册页中,这些术语似乎可以互换使用。
答案 0 :(得分:73)
命令被拆分为名为 arguments 的字符串数组。参数0(通常)是命令名,参数1,命令后面的第一个元素,依此类推。
$ ls -la /tmp /var/tmp
arg0 = ls
arg1 = -la
arg2 = /tmp
arg3 = /var/tmp
选项是记录的参数类型,用于修改命令的行为,例如: -l
通常表示“长”,-v
详细。 -lv
是单个参数中的两个选项。还有很长的选项,例如--verbose
。顾名思义,选项通常是可选的。然而,有些命令带有矛盾的“强制性选项”。
$ ls -la /tmp /var/tmp
option1= -l
option2= -a
参数是一个参数,它为命令或其中一个选项提供信息,例如:在-o file
中, file 是-o
选项的参数。与可能的值在程序中硬编码的选项不同,参数通常不是,因此用户可以自由地使用适合他/她需要的任何字符串。如果您需要传递看起来像一个选项但不应该被解释为的参数,您可以使用双短划线将其与命令行的开头分开:--
。
$ ls -la /tmp /var/tmp
parameter1= /tmp
parameter2= /var/tmp
$ ls -l -- -a
option1 = -l
parameter1 = -a
最后,还有子命令,也称为函数/(低级)命令,它们与“metacommands”一起使用,它嵌入了多个单独的命令,如busybox
,{{ 1}},git
,apt-get
等。使用它们,您可以在子命令之前使用全局选项,并在子命令之后使用子命令特定选项。与参数不同,可能的子命令列表在命令本身中是硬编码的。 e.g:
openssl
请注意,某些命令(如$ busybox ls -l
command = busybox
subcommand = ls
subcommand option1 = -l
$ git --git-dir=a.git --work-tree=b -C c status -s
command = git
command option1 = --git-dir=a.git
command option2 = --work-tree=b
command option3 = -C
subcommand = status
subcommand option1 = -s
,test
,tar
和dd
具有比前面描述的更复杂的参数解析语法,并且可能具有部分或全部参数解析为find
,expressions
,operands
和类似的命令特定组件。
答案 1 :(得分:7)
典型Unix命令的man
页面通常使用术语argument
,option
和parameter
。在最低级别,我们有argument
,一切都是参数,包括(文件系统路径)命令本身。
在shell脚本中,您可以使用特殊变量$0
.. $n
来访问参数。其他语言有类似的方式来访问它们(通常通过名称为argv
)的数组。
如果您愿意,参数可以解释为选项。如何做到这一点是特定于实现的。您可以自己推送,例如bash
}脚本可以使用提供的getopts
或getopt
命令。
这些通常将选项定义为以连字符(-
)开头的参数,并且某些选项可以使用前进参数作为其参数。功能更强的解析器(例如getopt
)支持混合短格式(-h
)和长格式(--help
)选项。
通常,大多数选项采用零个或一个参数。这些参数有时也称为值。
支持的选项在程序代码中编码(例如在shell脚本中调用getopts
)。选项消耗后的任何剩余参数通常称为位置参数,当它们的给定顺序很重要时(这与通常可以按任何顺序给出的选项形成对比)。
同样,该脚本根据消耗和使用它们的方式定义位置参数。
这是一个典型的命令
$ ls -I README -l foo 'bar car' baz
有七个参数:/usr/bin/ls
,-I
,README
,-l
,foo
,bar car
和baz
可访问作为$0
至$6
。 -l
和-I
被解释为选项,后者的{em>参数(或值)为{{ 1}}。剩下的是位置参数(README
,foo
和bar car
)。
选项解析可以通过删除它所消耗的参数列表来改变参数列表(例如,使用baz
或shift
),以便只保留位置参数,然后可以set
... { {1}}。
答案 2 :(得分:0)
由于该问题被标记为“ bash”,因此我在the Bash manual中查找了相关章节。我在下面将这些作为引用的段落列出,并附上我自己的一句话摘要。
命令后面的所有内容都是自变量。
简单的shell命令(例如
echo a b c
)由命令本身和后跟参数(由空格分隔)组成。简单命令是最常遇到的命令。它只是一个由空格分隔的单词序列,由外壳程序的一个控制运算符终止(请参见定义)。通常,第一个单词指定要执行的命令,其余的作为该命令的参数。
在函数执行过程中,参数称为参数。
执行函数时,函数的参数在执行过程中成为位置参数
参数是存储值的实体。它可以是名称,数字或下面列出的特殊字符之一。变量是用名称表示的参数。
位置参数是用一位或多位数字表示的参数,而不是一位数字0。位置参数是在调用Shell时从外壳参数中分配的,可以使用set buildin命令重新分配。位置参数N可以称为$ {N},或者当N由单个数字组成时称为$ N。
没有专门的部分来定义选项是什么,但是在本手册中,它们被称为连字符前缀的字符。
-p选项将输出格式更改为POSIX指定的格式