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 テーブルスペース暗号化の例の詳細な説明

推薦する

border-radius 値の設定に関する質問

問題記録今日はプログレスバーに似た小さなコンポーネントを完成させるつもりでした。プロトタイプは次のよ...

JavaScript メッセージ ボックスの例

JavaScript では、警告ボックス、確認ボックス、プロンプト ボックスの 3 種類のメッセージ...

Docker で Maven プロジェクトをより速くビルドする

目次I. 概要2. 従来の多段階イメージ構築3. Buildkitを使用してイメージをビルドする4....

MySQL アカウント情報をエレガントにバックアップする方法

序文:最近、インスタンスの移行の問題に遭遇しました。データの移行後、データベースのユーザーと権限も移...

カルーセルアニメーションを実現するVueコンポーネント

この記事では、カルーセルアニメーションを実現するためのVueコンポーネントの具体的なコードを例として...

Linux デスクトップ用の 4 つのスキャン ツール

ペーパーレスの世界はまだ到来していませんが、書類や写真をスキャンすることで紙をなくす人が増えています...

Docker で Node.js をデプロイする方法

序文プロジェクトでは中間層としてNodeを使用し、Nodeのデプロイにはdockerを使用します。こ...

MySQL 継続的集計の原理と使用法の分析

この記事では、例を使用して、MySQL の継続的な集計の原理と使用方法を説明します。ご参考までに、詳...

複数の .sql ファイルを MySQL に効率的にインポートする方法の詳細な説明

MySQL には、複数の .sql ファイル (SQL ステートメントを含む) をインポートする方法...

Mysqlはマスタースレーブ構成とマルチマスターマルチスレーブ構成を実装します

現在シミュレーションしているのは、マスター スレーブ システム (ホスト 1 台とスレーブ 1 台)...

JS の 3 つの主要な問題、非同期性とシングルスレッドについて簡単に説明します。

目次シングルスレッド非同期シングルスレッドしかし、開発中にネットワーク リクエストやスケジュールされ...

tomcatでcatalina.outログをカットする3つの方法の詳細な説明

1. ログセグメンテーションのためのLog4j 1) log4j-1.2.17.jar、tomcat...

JavaScript 関数呼び出し、適用、バインド メソッドのケース スタディ

要約する1. 類似点どちらも、ターゲット関数が実行されると内部の this ポインターを変更できます...

sqlalchemy に基づいて MySQL で追加、削除、変更、クエリ操作を実装する

需要シナリオ:上司は、クロ​​ーラーを使用してMySQLデータベースにデータを書き込んだり更新したり...

MySQL 5.6.37 (zip) ダウンロード インストール 構成 グラフィック チュートリアル

この記事では、MySQL 5.6.37のダウンロード、インストール、設定のチュートリアルを参考までに...