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

Tim*_*Tim -1 bash options

基本手册说,对于命令bash

-s

如果此选项存在,或者在选项处理后没有剩余参数,则从标准输入读取命令。此选项允许在调用交互式 shell 时设置位置参数。

我想知道如何理解“如果选项处理后没有任何参数”?

例如, bash -c "echo hello"不从标准输入读取命令,而“选项处理后没有剩余参数”,因为"echo hello"是 option 的参数-c,选项处理同时处理选项和它们的参数。

谢谢。

Ste*_*itt 5

在这种情况下,您不能从 Bash 手册中提取句子,甚至部分句子,并期望它们自己有意义。您需要阅读联机帮助页的“参数”部分,或“调用 Bash”部分的最后一段

如果选项处理后参数仍然存在,并且既-c没有-s提供选项也没有提供选项,则假定第一个参数是包含 shell 命令的文件的名称(请参阅Shell 脚本)。当以这种方式调用 Bash 时,$0设置为文件名,位置参数设置为其余参数。Bash 从这个文件中读取并执行命令,然后退出。Bash 的退出状态是脚本中执行的最后一个命令的退出状态。如果没有执行任何命令,则退出状态为 0。

“如果选项处理后没有参数剩余”与此相反,它的效果应该与-c-s选项的效果一起理解。如果您指定-c,则优先:

从第一个非选项参数command_string读取并执行命令,然后退出。如果command_string后面有参数,则将第一个参数$0分配给位置参数,并将任何剩余参数分配给位置参数。用于$0设置 shell 名称的赋值,用于警告和错误消息。

所以这里是你应该如何理解“如果在选项处理后没有剩余参数”:

  • 处理所有的选项,包括效果确定哪些shell将其参数和输入(做-c-s特别);
  • 一旦完成,如果 shell 的行为尚未修复,并且没有任何参数存在,那么......