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