web-dev-qa-db-ja.com

エラーsh:1:読み取り:引数カウント

ユーザーがを押してメッセージを確認するのを待つだけです Return。バッシュでは、私は呼び出すことができます

$ read

$ 

ただし、sh(私の場合はダッシュ)では、

$ read
sh: 1: read: arg count
$ 

必須引数を提供するように思えますか?その違いはどこから来るのですか?

2
finefoot

標準readユーティリティ は、少なくとも1つの変数名を取ります。

一部のシェルのread実装では、REPLYのようなdefault変数を使用して、変数が指定されていない場合に読み取りデータを格納しますが、dashは、POSIX準拠のシェルになることを目指しています(標準でそうする必要はないため)。 dashシェルの同等のものは次のようになります

read REPLY

bashシェルは、POSIXモードであっても、doesによって一部の非POSIX機能が有効になっています。これはその1つです。つまり、bash --posixシェルを実行しても、変数なしのreadは機能します。

bashでPOSIXモードを有効にすると発生することの完全なリスト(これは実際には問題ではありません)については、 https://www.gnu.org/software/bash/を参照してください。 manual/html_node/Bash-POSIX-Mode.html

7
Kusalananda