私は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