Bash

錯誤 sh:1:讀取:arg 計數

  • August 13, 2020

我只想等待使用者通過按確認消息Return。在 bash 中,我可以呼叫

$ read

$ 

但是,在 sh (在我的情況下是破折號),我得到

$ read
sh: 1: read: arg count
$ 

看來我必須提供一個論點?這種差異從何而來?

標準read實用程序至少採用一個變數的名稱。

某些 shell 的read實現使用預設變數,例如REPLY,如果沒有提供名稱,則儲存讀取的數據,但是dash,為了成為 POSIX 兼容的 shell,沒有(因為標準不需要這樣做)。dash外殼中的等價物是

read REPLY

即使在其bashPOSIX 模式下,shell 也會啟用一些非 POSIX 功能*。*這是其中之一,這意味著read即使您執行bash --posixshell,沒有變數名也可以工作。

有關啟用 POSIX 模式時發生的事情的完整列表bash(這個問題實際上與此無關),請參閱https://www.gnu.org/software/bash/manual/html_node/Bash-POSIX-Mode。 html

引用自:https://unix.stackexchange.com/questions/581409