我们如何理解“如果选项处理后没有剩余参数”?

我们如何理解“如果选项处理后没有剩余参数”?

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 的行为尚未修复,并且没有任何参数存在,那么......

相关内容