Linuxの読み取りコマンドとは何ですか?
Linuxのreadコマンド は、ユーザーがキーボードから取得した入力を操作するための方法です。これは、stdin(標準入力)または他の同様の説明と呼ばれる場合があります。
つまり、bashスクリプトがユーザーからの入力を受け取るようにするには、readコマンドを使用する必要があります。
読み取りコマンドの実際の使用法を示すために、いくつかの簡単なbashスクリプトを作成します。

読み取りコマンドは、特にシェルスクリプトを初めて使用する人にとっては、使い始めるのに混乱する可能性があります。ここで使用するスクリプトは非常に理解しやすく、特にチュートリアルと一緒に練習している場合は、簡単に理解できるはずです。
基本的なプログラミングの概念
ほとんどすべてのプログラムまたはスクリプトで、ユーザーから情報を取得し(入力)、その情報をどのように処理するか(出力)をコンピューターに指示する必要があります。
readを使用すると、ユーザーからの入力をキャプチャしたいbashターミナルと通信していることになります。デフォルトでは、コマンドはその入力を保存する変数を作成します。
read [options] variable_name
次に、readコマンドの例をいくつか見て、さまざまな状況でどのように使用できるかを理解しましょう。
1。オプションなしでコマンドを読む
追加オプションなしでreadと入力した場合、キャプチャを開始するにはEnterキーを押す必要があります。もう一度Enterキーを押すまで、システムは入力をキャプチャします。
デフォルトでは、この情報は$REPLY
という名前の変数に保存されます 。
最初の例をわかりやすくするために、↵
を使用します。 エンターキーを押すと記号が表示されます。
read ↵
hello world ↵
echo $REPLY ↵
hello world
変数の詳細
前述したように、$REPLY
変数はread
に組み込まれています 、したがって、宣言する必要はありません。
アプリケーションが1つしかない場合は問題ないかもしれませんが、多くの場合、独自の変数を使用することをお勧めします。読み取りを使用して変数を宣言する場合、変数の名前を入力する以外に何もする必要はありません。
変数を呼び出すときは、$
を使用します 名前の前に。変数Linux_Handbook
を作成する例を次に示します。 入力の値を割り当てます。
echoコマンドを使用して、読み取りコマンドがその魔法を実行したことを確認できます。
read Linux_Handbook ↵
for easy to follow Linux tutorials.
echo $Linux_Handbook ↵
for easy to follow Linux tutorials.
注意:変数名は大文字と小文字が区別されます。
2。プロンプトオプション-p
スクリプトを作成していて、ユーザー入力をキャプチャする場合は、コードを簡略化できるプロンプトを作成するための読み取りオプションがあります。コーディングは効率がすべてですよね?
追加の行やエコーコマンドを使用する代わりに、-p
を使用するだけです。 オプションフラグ。引用符で入力したテキストは意図したとおりに表示され、ユーザーは入力のキャプチャを開始するためにEnterキーを押す必要はありません。
したがって、次のように2行のコードを記述する代わりに:
echo "What is your desired username? "
read username
-p
を使用できます 次のような読み取りコマンドを使用したオプション:
read -p "What is your desired username? " username
入力は変数$usernameに保存されます。
3。 「シークレット」/サイレントオプション-s
次のフラグを示すために、単純なbashスクリプトを作成しました。まず、出力を見てください。
bash secret.sh
What is your desired username? tuxy_boy
Your username will be tuxy_boy.
Please enter the password you would like to use:
You entered Pass123 for your password.
Masking what's entered does not obscure the data in anyway.
secret.sh
の内容は次のとおりです 再作成したい場合。
#!/bin/bash
read -p "What is your desired username? " username
echo "Your username will be" $username"."
read -s -p "Please enter the password you would like to use: " password
echo
echo "You entered" $password "for your password."
echo "Masking what's entered does not obscure the data in anyway."
ご覧のとおり、-s
オプションは、パスワードが入力されたときに入力をマスクしました。ただし、これは表面的な手法であり、実際のセキュリティを提供するものではありません。
4。読み取りオプション-n
で文字制限を使用する
入力に制約を追加して、長さがn文字に制限できます。
以前と同じスクリプトを使用しますが、入力が5文字に制限されるように変更します。
read -n 5 -p "What is your desired username? " username
-n N
を追加するだけです ここで、Nは選択した番号です。
パスワードについても同じことをしました。
bash secret.sh
What is your desired username? tuxy_Your username will be tuxy_.
Please enter the password you would like to use:
You entered boy for your password.
ご覧のとおり、プログラムはユーザー名の5文字後に入力の収集を停止しました。
ただし、↵
を押す限り、5文字未満で書き込むことができます。 入力後。
それを制限したい場合は、-N
を使用できます (-nの代わりに)この変更により、正確に5文字が必要になり、それより少なくも多くもなりません。
5。配列に情報を保存する-a
Linuxでreadコマンドを使用して、独自のアレイを作成することもできます。これは、入力のチャンクを配列内の要素に割り当てることができることを意味します。デフォルトでは、スペースキーは要素を区切ります。
[email protected]:~$ read -a array
abc def 123 x y z
[email protected]:~$ echo ${array[@]}
abc def 123 x y z
[email protected]:~$ echo ${array[@]:0:3}
abc def 123
[email protected]:~$ echo ${array[0]}
abc
[email protected]:~$ echo ${array[5]}
z
アレイを初めて使用する場合、またはアレイがbashでどのように使用されるかを初めて確認する場合は、何が起こっているかを分析します。
- 必要な要素をスペースで区切って入力します。
- @変数のみを配置すると、ループ全体が繰り返されて出力されます。
- @記号は要素番号を表し、その後にコロンを付けると、インデックス0からインデックス3まで反復することができます(ここに記述されています)。
- 要素をインデックス0に出力します。
- 上記と同様ですが、要素がスペースで区切られていることを示しています
ボーナスのヒント:タイムアウト関数を追加する
読み取りにタイムアウトを追加することもできます。割り当てられた時間内に入力がキャプチャされない場合、プログラムは続行または終了します。
[email protected]:~$ read -t 3
[email protected]:~$
出力を見るとわかりにくいかもしれませんが、端末は3秒間待機してから、タイムアウトして読み取りプログラムを終了しました。
結論
このチュートリアルが、Linuxでreadコマンドを使い始めるのに役立つことを願っています。いつものように、私たちは読者が興味を持っているコンテンツについて聞くのが大好きです。下にコメントを残して、私たちとあなたの考えを共有してください!