Linuxの読み取りコマンドの使用

Linuxの読み取りコマンドの使用

1. コマンドの紹介

read コマンドは、シェルの組み込みコマンドで、標準入力または -u オプションで指定されたファイル記述子から 1 行を読み取り、読み取った 1 行を IFS 変数に従って複数のフィールドに分割し、分割されたフィールドをそれぞれ指定された変数リスト var_name に割り当てるために使用されます。最初のフィールドは最初の変数 var_name1 に割り当てられ、2 番目のフィールドは 2 番目の変数 var_name2 に割り当てられ、以下同様に続きます。指定された変数名がフィールド数より少ない場合、セパレータとともに追加のフィールドが最後の var_name に割り当てられます。指定された変数コマンドがフィールド数より多い場合、追加の変数割り当ては空になります。 var_name が指定されていない場合、分割後のすべてのフィールドは特定の変数 REPLY に格納されます。もちろん、変数だけでなく配列も割り当てることができます。

IFS (内部フィールド区切り) 変数は、シェルの組み込み環境変数であり、read コマンドによって 1 行を複数のフィールドに分割するために使用されます。デフォルト値は です。

REPLY 変数もシェルの組み込み環境変数です。read コマンドで受信変数が指定されていない場合、この変数は read コマンドによって読み取られた 1 行のコンテンツを受信するために使用されます。

2. コマンド形式

読み取り [-ers] [-a aname] [-d delim] [-i text] [-n nchars] [-N nchars] [-p prompt] [-t timeout] [-u fd] [name ...]

3. オプションの説明

-a [aname]: 配列インデックス 0 から始まる、指定された配列に分割フィールドを順番に格納します。 -d [delim]: 識別子が続きます。最初の文字のみが有用で、行末の改行文字を置き換えるために使用されます。 -e: 入力時にコマンド補完機能を使用できます。また、Tab キーを使用して、現在のディレクトリ内のファイルを自動的に補完できます。 -i [text]:行の読み取りに readline が使用されている場合、編集を開始する前にテキストが編集バッファーに配置されます。
-n [nchars]: 数字が続き、行全体を読み取る代わりに入力テキストの長さを定義します。 -N [nchars]: 数字が続き、行全体を読み取る代わりに入力テキストの長さを定義します。ただし、行が nchars 文字未満の場合、行区切りは無視され、次の行が読み取られます -p [prompt]: 端末から入力を読み込むときに、入力の前にプロンプ​​ト メッセージを出力します -r: バックスラッシュ \ をシールドします。このオプションが使用できない場合は、\ がエスケープ文字として使用されます。使用できる場合は、\ は通常の文字です -s: クワイエット モード。ログイン時のパスワード入力など、文字を入力すると、画面に表示されなくなります -t [timeout]: 文字入力の待機時間を定義する秒数が続きます -u [fd]: ファイル記述子 fd が続き、ファイル記述子から読み取られます

4. 一般的な例

(1) 変数が指定されていない場合、readは渡された値をREPLYに渡し、REPLYが呼び出されている限り参照することができます。

[root@TENCENT64 ~]# 読み取り;echo "\$REPLY:$REPLY"
ダブルブ
$返信:dablelv

(2)Readは端末から読み取る際のプロンプトを指定する。

[root@TENCENT64 ~]# read -p"パスワードを入力してください:";echo "\$REPLY:$REPLY"
パスワードを入力してください:123456
$返信:123456

(3) -tパラメータは、読み取りコマンドが入力を待機する秒数を指定します。タイマーが切れると、読み取りコマンドはゼロ以外の終了ステータスコードを返します。

#!/bin/bash

if read -t 5 -p "ウェブサイト名を入力してください:" name
それから
  echo "入力したウェブサイト名は $website です"
それ以外
  echo "\n申し訳ありませんが、入力がタイムアウトしました。"
フィ
終了 0

入力なしでプログラムを実行し、5 秒間待機します。

ウェブサイト名を入力してください:
申し訳ありませんが、入力がタイムアウトしました

(4)入力時間の制御に加えて、-nオプションを使用して入力文字数を制御することもできます。入力した文字数があらかじめ設定した数に達すると自動的に終了し、入力したデータを変数に代入します。たとえば、2 つの入力のみを受け取った後に終了します。

#!/bin/bash

read -n2 -p "2文字を入力してください: " 任意
echo "\n入力した2文字は: $any"
終了 0

(5)-sオプションは、入力データがコマンド端末に表示されないようにします。(実際には入力内容は表示されますが、readコマンドはテキストの色を背景と同じ色に設定します。)このオプションは、パスワードを入力するためによく使用されます。

#!/bin/bash

read -s -p "パスワードを入力してください:" pass
echo "\n入力したパスワードは $pass です"
終了 0

プログラムの実行後、パスワードは表示されません。

パスワードを入力してください:
入力したパスワードはrunoobです

(6)ファイルの読み込み

read コマンドを呼び出すたびに、ファイルから 1 行のテキストが読み取られます。ファイルから読み取る行がなくなると、読み取りコマンドはゼロ以外のステータスで終了します。

var1 var2 を読み取り中
する
	$var1 $var2をエコーする
完了 < file.txt

上記は Linux の read コマンドの使用に関する詳細な内容です。Linux の read コマンドの詳細については、123WORDPRESS.COM の他の関連記事をご覧ください。

以下もご興味があるかもしれません:
  • Linux gzip コマンドのファイル圧縮実装原理とコード例
  • Linux の gzip コマンド
  • Linux userdel コマンドの使用法
  • Linuxのdateコマンドの使用
  • Linuxコマンドをバックグラウンドで実行する方法
  • Linux lsコマンドの使用
  • Linux chkconfig コマンドの使用
  • Linux usermod コマンドの使用
  • Linuxのpasswdコマンドの使用
  • Linux lnコマンドの使用
  • Linux の cut コマンドの説明
  • Linux gzipコマンドの使用

<<:  JavaScript ループトラバーサルの 24 種類のメソッドをすべてご存知ですか?

>>:  MySQL InnoDB テーブルスペース暗号化の例の詳細な説明

推薦する

CSS スタイルの導入方法とその長所と短所の紹介

CSSを導入する3つの方法1. インラインスタイル利点: 書きやすく、重みがある 欠点: 構造とスタ...

MySQLでレコードを変更する場合、更新操作フィールド = フィールド + 文字列

シナリオによっては、varchar 型のフィールドを変更する必要があり、変更の結果は 2 つのフィー...

コンテナDockerCommitを介してイメージを送信し、DockerPushでイメージをプッシュします。

ローカルでコンテナを作成した後、このコンテナに基づいてローカル イメージを作成し、このイメージを D...

JavaScriptにおけるこのポインティング問題の詳細な説明

序文信じてください。この記事の 7️⃣ ステップを覚えておけば、JS の this リファレンスを完...

mysqlはコンマに基づいてデータ行を複数の行に分割します

目次分離効果コマンドラインの説明関与する機能分離効果-- 別居前1,2,3,4 -- 別居後1 2 ...

Vue3.0はチェックボックスコンポーネントのカプセル化を実装します

この記事では、チェックボックスコンポーネントのカプセル化を実装するためのvue3.0の具体的なコード...

antd pro に基づく SMS 認証コード ログイン機能 (プロセス分析)

目次まとめ全体的なプロセスフロントエンドページコード検証コードとログイン サービスをリクエストする ...

Angularが予期しない例外エラーを処理する方法の詳細な説明

前面に書かれたコードがどれだけ適切に記述されていても、すべての可能性のある例外を完全に処理することは...

ブラウザでTIF形式の画像を表示する方法

ブラウザはTIF形式の画像を表示しますコードをコピーコードは次のとおりです。 <html>...

HTML コマンドラインインターフェースの実装

HTML部分コードをコピーコードは次のとおりです。 <!DOCTYPE html> &l...

iframe の多層ネスト、無制限のネスト、高度に適応したソリューション

ページ A、B、C の 3 つがあります。ページ A にはページ B が含まれ、ページ B にはペー...

CSS3で実装されたスライドメニュー

結果:実装コード: <!DOCTYPE html><html class=&quo...

Vueのライブ放送機能の詳しい説明

最近、会社でたまたま生放送をしていたのですが、今日は私が遭遇した落とし穴を記録します。会社のサーバー...

Nodejs でタイムドクローラーを実装する完全な例

目次事件の原因Node Scheduleを使用してスケジュールされたタスクを実装する1. node-...

画像比較を実現するjQueryプラグイン

この記事の例では、画像比較を実現するためのjQueryプラグインの具体的なコードを参考までに共有して...