我只想等待用户按 确认消息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