GNU/Linux >> Linux の 問題 >  >> Linux

Bash読み取りコマンドの使用方法

はじめに

バッシュread コマンドは、標準入力からテキストを読み取る組み込みのユーティリティです。このツールは、ユーザー入力を読み取るための多くの機能を提供し、Bashスクリプトをインタラクティブにするのに役立ちます。

このガイドでは、Bashのreadについて説明しています。 コマンドはさまざまな例と使用例で機能します。

前提条件

  • コマンドライン/ターミナルへのアクセス。
  • 環境変数の操作の基本。

Bash読み取り構文

Bashの構文read コマンドは次のとおりです:

read <options> <arguments>

read コマンドはユーザー入力を受け取り、文字列をフィールドに分割し、新しい各単語を引数に割り当てます。単語よりも変数が少ない場合は、read 残りの項を最終変数に格納します。

引数名の指定はオプションです。このコマンドは、ユーザーの入力を $REPLYに保存します デフォルトでは変数です。

Bash読み取りオプション

バッシュread コマンドには、ユーザー入力を制御するための多くのオプションが付属しています。一部のオプションは追加のパラメーターを必要としませんが、他のオプションには必須のパラメーターがあります。

次の表に、可能なすべてのコマンドオプションとその説明を示します。

オプション 説明
-a <array> 指定された単語シーケンスを<array>という名前の変数に割り当てます
-d <delimiter> 指定された<delimiter>まで行を読み取ります 新しい行の代わりに。
-e 対話型シェルセッションを開始して、読み取る行を取得します。
-i <prefix> 行をプレフィックスとして読み取る前に最初のテキストを追加します。
-n <number> 指定された文字数を読み取った後、区切り文字を使用して早期に終了するようにした後、戻ります。
-N <number> 区切り文字を無視して、指定された文字数を読み取った後に戻ります。
-p <prompt> ユーザー入力を読み取る前にプロンプ​​ト文字列を出力します。
-r バックスラッシュを無効にして文字をエスケープします。
-s ユーザーの入力をエコーし​​ません。
-t <time> コマンドは、指定された時間(秒単位)の後にタイムアウトします。
-u <file descriptor> 標準入力の代わりにファイル記述子から読み取ります。

読み続けて、読み取りコマンドを確認してください さまざまな例で機能します。

Bash読み取りの例

read コマンドは引数やオプションなしで機能します。コマンドをテストするには、次の手順に従います。

1.ターミナルを開きます。

2.コマンドを記述し、 Enterを押します :

read

プロンプトはユーザー入力を待ちます。

3.文を入力して、 Enterを押します 。

端末は通常の状態に戻ります。

4. echoコマンドを使用してメッセージを取得します:

echo $REPLY

$REPLY 変数はreadを格納します コマンドメッセージ。

以下は、Bash readのより複雑なユースケースを示す例です。 コマンド。

引数

引数を指定して、ユーザー入力を指定された変数に保存します:

read input

次のメッセージを取得します:

echo $input

または、ユーザー入力を分割 複数の引数を追加して、さまざまな変数に変換します。

例:

read var1 var2

ユーザー入力は個々の単語に分割されます。でそれらを取得します:

echo $var1
echo $var2

ユーザー入力に変数よりも多くの単語が含まれている場合、最後に提供された変数に追加の単語が割り当てられます。

read var1 var2
foo bar baz
echo $var1
echo $var2

変数よりも単語が少ない場合、残りの変数は空です。

配管

配管は、あるコマンドから標準出力を受け取り、それを別のプロセスの標準入力として解析します。 echoを使用する 情報をreadにパイプします 即時解析用。例:

echo "Hello world!" | (read var1 var2; echo $var1; echo $var2)

括弧は複数のコマンドでサブシェルを作成し、個々の変数はコンソールに出力されます。

ヒアドキュメント

readにテキストを入力する別の方法 コマンドはヒアドキュメント表記を使用しています。例:

read var1 var2 <<< "Hello world!"
echo $var1
echo $var2

read コマンドは、入力ストリームリテラルとリダイレクト識別子( <<<)を必要とします )herestringを入力します。

区切り文字

read コマンドは2つの区切り文字タイプを定義します:

1.readの区切り文字 指図。

デフォルトでは、 Enterを押します (改行)コマンドを終了します。 -dを追加します タグを付け、引用符で別の区切り文字を指定して、別の方法で終了します。

例:

read -d "-"

新しい行の代わりに、新しい区切り文字はダッシュ( -)です。 )改行の代わりに。コマンドは、引数の数を無視して、区切り文字に到達すると終了します。 $REPLYの応答 または、提供された変数は、ダッシュなしでユーザー入力を格納します( -

2.フィールドを分割するための区切り文字。

変数$IFS (Internal Field Separator)は、単語の区切り文字を格納します。単語を分割するデフォルト値はスペース""です。 $IFSを設定します この動作を制御するために別の値に変数を設定します。

たとえば、単語をダッシュ​​で区切るには、次を使用します。

IFS="-"
echo "Hello-world!" | (read var1 var2; echo $var1; echo $var2)

異なる区切り文字を追加して、フィールドを異なる値で分割します:

IFS="-_"
echo "Hello_world-!" | (read var1 var2 var3; echo $var1; echo $var2; echo $var3)

区切り文字の長さは1文字で、 $IFS 記載されている各仕切りを個別に取得します。

プロンプト

readコマンドを使用して、対話型プロンプトを作成します。 -pを追加します タグを付けて、プロンプトテキストを入力します。例:

read -p "Enter your username: " username

プロンプトテキストが印刷され、ユーザー入力が必要です。テキストは変数$usernameに保存されます

echo Your username is $username.

-pを使用します プロンプト作成で機能するBashスクリプトのオプション。

ユーザー入力を非表示にする

read コマンドは-sを提供します 機密情報の入力を非表示にするタグ。一般的な使用例は、 -sを組み合わせることです。 -pを使用 タグを付けてパスワードプロンプトを作成します。

例:

read -p "Enter your password: "$'\n' -s password

ユーザーの入力は表示されません。ただし、メッセージをエコーすると、パスワードが表示されます:

echo $password

readを使用する場合は、この動作に注意してください パスワードの入力を求めるスクリプトで。

文字数制限の設定

readコマンドは、ユーザー入力の文字数を制限するときに2つのオプションを提供します。

1. -nを使用します オプションで、文字数制限を設定するための番号を指定します。例:

read -n 3

Enterを押します 1文字後、文字数制限に達する前にコマンドを終了します。 Enterを押さずに 、コマンドは3文字後に自動的に終了します。

2. -Nを使用します オプションを指定し、区切り文字を無視して文字数制限を設定するための数値を指定します。例:

read -N 3

Enterを押す コマンドを終了しません。ただし、キーストロークは文字としてカウントされます。

タイムアウトの設定

readにタイムアウトを設定します テキストの入力にかかる時間を制限するには:

read -t 5

コマンドは、指定された制限時間後に自動的に終了します。

配列

個々の変数を使用して文字列を格納する代わりに、 -aを追加します 入力を配列に保存するオプション。例:

read -a array <<< "Hello world!"

次のコマンドで配列要素を取得します:

echo ${array[0]}
echo ${array[1]}

または、forループを使用して配列を反復処理します。

エスケープ文字と円記号

read コマンドを使用すると、円記号を使用して長い入力を複数の行に分割できます。例:

read password prompt terminal output
Hello \
world\
!

Enterを押す バックスラッシュの後はコマンドを終了せず、次の行にさらに入力する必要があります。

バックスラッシュの解釈を無視するには、 -rを追加します オプション:

read -r <<< "Hello\world!"; echo $REPLY

このオプションは、ファイルパスや、円記号に意味があるテキストを解析するときに使用します。


Linux
  1. Linuxsedコマンドの使用方法

  2. Linuxgrepコマンドの使用方法

  3. Linuxでidコマンドを使用する方法

  1. Linuxでhistoryコマンドを使用する方法

  2. basenameコマンドの使用方法は?

  3. Linux で「screen」コマンドを使用する方法

  1. vmstatコマンドの使用方法

  2. Linuxの履歴コマンドの使用方法

  3. Bashletコマンドの使用方法{例付き}