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

推薦する

SQL Server の完全バックアップに関する珍しいエラーと解決策

1. エラーの詳細一度、データベース全体のバックアップを手動で実行したときに、次のエラーが発生しまし...

arcgis.js は、マップ本体の表示範囲を制御し、領域を超えた場合に自動的にバウンスするようにします (実装のアイデア)

目次背景効果アイデア背景少し前に、会社のプロジェクトで問題が発生しました。地図のベースマップ領域の範...

フロントエンドの面接でよく聞かれる JavaScript の質問の完全なリスト

目次1. 手書きのインスタンス2.配列のマップメソッドを実装する3. Reduceは配列のmapメソ...

MySQL が innobackupex を使用して接続サーバーをバックアップできない場合の解決策

innobackupex を使用してバックアップする際に MySQL がサーバーに接続できない場合は...

Webpackプラグインを書いてnpmに公開するための80行のコード

1. はじめに最近、 Webpackの原理を勉強しています。これまでは Webpack の設定方法し...

JavaScript のよりエレガントなエラー処理方法 async await

目次背景なぜエラー処理が必要なのでしょうか? async await より適切なエラー処理まとめ要約...

MySQL インデックスの正しい使い方とインデックスの原理の詳細な説明

1. はじめになぜインデックスが必要なのでしょうか?一般的なアプリケーション システムでは、読み取り...

スライドによるページめくり効果とクリックイベント問題をモバイル端末上で実装する

前述のこの記事はとても短いです〜主な目的は、モバイル端末上のクリックと js イベントのメカニズムに...

iptables の再起動後に Docker の iptables ルールの完全なプロセスが失われる

原因と結果1. ansibleコマンドを使用してジャンプサーバー上のマシンBをテストすると、次のエラ...

Windows Server 2008 64ビット MySQL5.6 インストール不要版 設定方法図

1 公式ウェブサイトから MySQL 5.6 バージョンの圧縮パッケージmysql-5.6.36-w...

HTML シンプルな Web フォーム作成例の紹介

<input> はユーザー情報を収集するために使用され、終了ステートメントはありません。...

ハッシュテーブルのJavaScript実装の詳細な説明

目次1. ハッシュテーブルの原理2. ハッシュテーブルの概念3. ハッシュ競合問題1. チェーンアド...

mysql 8.0.20 winx64.zip 圧縮版のインストールと設定方法のグラフィックチュートリアル

mysql 8.0.20 winx64.zip圧縮版のインストールチュートリアルは以下のように記録さ...

JavaScript でドラッグ可能なプログレスバーを実装する

この記事では、ドラッグ可能なプログレスバーを実装するためのJavaScriptの具体的なコードを参考...