Basy 手册说对于命令bash
:
-s
如果存在此选项,或者如果选项处理后没有剩余参数,然后从标准输入读取命令。该选项允许在调用交互式 shell 时设置位置参数。
我想知道如何理解“如果选项处理后没有剩余参数”?
例如, bash -c "echo hello"
不从标准输入读取命令,而“选项处理后没有剩余参数”,因为"echo hello"
是 option 的参数-c
,并且选项处理会处理选项及其参数。
谢谢。
答案1
您不能从 Bash 手册中取出句子,甚至在本例中是句子的一部分,并期望它们本身有意义。您需要阅读联机帮助页的“ARGUMENTS”部分,或最后一段“调用 Bash”部分:
如果选项处理后仍有参数,并且既没有提供
-c
也-s
没有提供选项,则假定第一个参数是包含 shell 命令的文件的名称(请参阅外壳脚本)。当以这种方式调用 Bash 时,$0
被设置为文件名,位置参数被设置为其余参数。 Bash 从此文件读取并执行命令,然后退出。 Bash 的退出状态是脚本中执行的最后一个命令的退出状态。如果没有执行任何命令,则退出状态为 0。
“如果选项处理后没有参数剩余”与此相反,其效果应与-c
和-s
选项的效果一起理解。如果您指定-c
,则优先:
从第一个非选项参数读取并执行命令命令字符串,然后退出。如果后面有争论命令字符串,第一个参数被分配给位置参数
$0
,任何剩余的参数都被分配给位置参数。的赋值$0
设置 shell 的名称,该名称用于警告和错误消息。
因此,您应该如何理解“如果选项处理后没有剩余参数”:
- 处理所有选项,包括决定 shell 将如何处理其参数和输入(特别
-c
是-s
)的效果; - 一旦完成,如果 shell 的行为尚未修复,并且没有任何参数存在,那么......