読み取りコマンドで入力に複数の変数を使用するには?

読み取りコマンドで入力に複数の変数を使用するには?

私はGNU bashバージョン4.2.10(1)を使用しています。単一の変数を使用して複数の変数を読みたいです。読むシェルスクリプトのコマンド。だから、次のことを試しました。

echo " Enter P N R : "
read P N R

しかし、うまくいきません。 P変数の単一値のみを要求し、プロンプトを返します。グーグルをしましたが、解決策が見つかりませんでした。

答え1

read-r、入力の単語が特殊引数の文字で区切られることを期待せず$IFS(デフォルトはSPC、TAB、およびNLですが、1行readだけを読み取るためNLはバックスラッシュで終わらないと計算できません)、バックスラッシュを使用して区切り文字をエスケープするか、1行が次の実際の行に続くことを許可します(バックスラッシュ改行シーケンスを削除)。

したがって、ユーザーはここでP、N、Rの値をスペースまたはタブで区切って入力する必要があります。例:

value_for_P value_for_N value_for_R

または値にスペースを含めることができる場合:

value\ for\ P value\ for\ N value for R

(ここでは、3行目以降の残りの行がRの空白から外れることを気にしませんでした。言葉とにかく、ユーザーはまだエスケープする必要があります。続くしかし、スペース)。

ユーザーに行3に値を入力させるには、3回のread呼び出しが必要です。その後、-rバックスラッシュ処理を避け、IFSを空にする必要があります。

IFS= read -r P
IFS= read -r N
IFS= read -r R

関連情報