错误 sh: 1: 读取: arg 计数

错误 sh: 1: 读取: arg 计数

我只想等待用户按 确认消息Return。在 bash 中,我可以调用

$ read

$ 

然而,在 sh (在我的例子中是破折号),我得到

$ read
sh: 1: read: arg count
$ 

看来我必须提供论据?这种差异从何而来?

答案1

标准read实用程序需要最后一个变量的名称。

一些贝壳的read实现使用默认变量,如REPLY,在未提供名称的情况下存储读取的数据,但是dash,旨在成为 POSIX 兼容的 shell,则不会(因为标准不要求这样做)。 shell中的等效项dash

read REPLY

shell bash,即使在 POSIX 模式下,启用一些非 POSIX 功能。这是其中之一,这意味着read即使您运行 shell,没有变量名称也可以工作bash --posix

有关启用 POSIX 模式时发生的事件的完整列表bash(这个问题实际上与此无关),请参阅https://www.gnu.org/software/bash/manual/html_node/Bash-POSIX-Mode.html

相关内容