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

推薦する

Ubuntu システムに Theano と Keras をインストールする方法

注: システムは Ubuntu 14.04LTS、32 ビット オペレーティング システムです。Py...

Vue モバイル開発で better-scroll を使用するときにクリック イベントが失敗する問題の解決策

最近、モバイル プロジェクトの開発方法を学ぶために vue を使用し、スクロールには better-...

MySQL でデータをクエリし、条件に基づいて別のテーブルに更新する方法の例

この記事では、MySQL が条件に基づいてデータをクエリし、別のテーブルに更新する方法を例を使用して...

Linux は suid vim.basic ファイルを使用して権限昇格を実現します。

カリで再現まず、必要なvim.basicファイルにsuid権限を設定します。 chmod u+s /...

Vueの計算プロパティの詳細な説明

1. 計算属性とは何ですか? 簡単に言えば、計算された結果が属性に保存されるもので、キャッシュとして...

nginx 用の zabbix 5.0 をインストールして展開する方法

目次実験環境インストールと展開データベースをインストールして設定します (ここでは mariadb ...

Centos7でmysql6の初期化インストールパスワードをインストールする方法

1. まずデータベースサーバーを停止しますサービスmysqld停止2.vim /etc/my.cnf...

Windows 64 ビットに MySQL を再インストールするチュートリアル (Zip バージョン、解凍バージョンの MySQL インストール)

MySQLをアンインストールする1. コントロールパネルで、MySQLのすべてのコンポーネントをア...

ドロップダウンリスト選択ボックスを実装するJavaScript

この記事の例では、ドロップダウンリスト選択ボックスを実装するためのJavaScriptの具体的なコー...

Mybatis での動的 SQL ステートメント分析

この記事は主にMybatisでの動的SQL文の解析について紹介します。この記事のサンプルコードは非常...

HTML/CSSにおける記号論の詳細な説明

この記事では、ソシュールの言語哲学などの理論に基づいて、CSS の class 属性は不要であると主...

ウォーターフォールフローレイアウトを実装する3つの方法

序文今日、Xianyuを閲覧していたとき、各行の高さが同じではないことに気付きました。調べてみると、...

Linux サーバー上の hosts ファイル構成の詳細な説明

Linux サーバーのホスト ファイルの構成hosts ファイルは、Linux システム内の IP ...

MySql クライアントが数秒で終了する問題を解決する (my.ini が見つからない)

問題の説明 (環境: windows7、MySql8.0)今日、MySql をインストールした後、M...