もっと詳しく
bashシェルのMapfileコマンドは、読み取り配列と呼ばれることがよくあります。 主な目的は、標準の入力行を読み取り、それらをインデックス付き配列変数に格納することです。 Mapfileは、置換からも読み取る必要があります(

touchコマンドは、UNIX / Linuxオペレーティングシステムのファイルのタイムスタンプを作成、変更、および編集するために使用されます。 そのため、画像に示すように、シェル内で「タッチ」命令を実行して、新しいテキストファイルを作成しました。 GNU nanoは、Unix/Linuxオペレーティングシステム用の基本的な組み込みコマンドラインエディタです。 $記号の後に「nano」と入力し、その後にファイル名を入力して、新しいファイルを開くか作成します。

$ touch new.txt
$ nano new.txt

例1:ファイルから配列として読み取る

シェルの「nano」コマンドは、「nano」エディターで「new.txt」ファイルを開きます。 図のように、テキストファイルにテキストOne、TWo、およびTHreeを3行で入力しました。 Ctrl + Sを使用してこの単純なテキストデータファイルを保存し、Ctrl+Xショートカットを使用して「nano」エディタを閉じます。

次に、mapfile命令を使用して、追加したばかりのテキストデータを配列形式に読み込みます。 new.txtファイルのテキスト行は、mapfileコマンドを使用して、変数「var」の配列要素として保存されます。 2行目では、エコークエリを使用して、変数「var」に格納されている配列の各インデックスのすべてのデータを配列形式で出力します。 同様に、「echo」ステートメントコードの次の行は、特定のインデックス、つまり配列の0、1、2、3でデータを個別に表示するために使用されます。 配列には3つの値しか含まれていないため、インデックス3の結果は何も返しません。

$ mapfile Var $ echo $ {Var[@]}
$ echo $ {Var[0]}
$ echo $ {Var[1]}
$ echo $ {Var[2]}
$ echo $ {Var[3]}

例2:出力データを配列に読み込む

また、mapfile命令を使用して、bash命令から配列への出力ステートメントデータを利用することもできます。 printfステートメントを使用して、出力データを配列「Arr」に取得しています。 mapfile命令を使用して、改行特殊文字「 n」で区切られた「Ana」、「Paul」、および「George」の3つの値が格納されます。 その後、最初のechoコマンドを使用して、配列内のすべてのデータを表示します。 配列「Arr」の各インデックスで発生するデータは、「echo」ステートメントとそれに続く角括弧内のインデックス番号を介して、コードの次の行に同様に表示されます。 配列の3番目のインデックスにはデータがないため、画面に出力は表示されません。 次の例に移りましょう。

$ mapfile Arr <<(printf“ Ana nPaul n George n”)
$ echo $ {Var[@]}
$ echo $ {Var[0]}
$ echo $ {Var[1]}
$ echo $ {Var[2]}
$ echo $ {Var[3]}
$ echo $ {Var[0]}

例03:Mapfile –nオプション

map fileコマンドには、実行用の組み込みオプションがあります。 ザ -nオプション 配列の入力として受け取るデータファイルからの値の数を指定するために使用されています。 nの値がゼロの場合は、すべての行を配列にコピーする必要があります。 次の例の最初の行は、–nオプションを2に設定してmap fileコマンドを使用しています。これは、ファイルの最初の2行を、配列のインデックス値として「Var」という配列に読み込むことを意味します。

echoコマンドは、配列「Var」のすべてのインデックス、つまり2つのインデックスのデータを表示します。これは、mapfileコマンドが-nオプションを指定してファイルの最初の2行をコピーすることを意味します。 以下に示すように、mapfile命令で値1を指定して「-n」オプションを使用すると、ファイルから1行だけが読み取られます。

$ mapfile –n Var $ echo $ {Var[@]}
$ mapfile –n 1 Var $ echo $ {Var[@]}

例04:Mapfile –tオプション

「-t」オプションは、アイテムを配列に格納することにより、アイテムから改行を削除/削除するために使用されます。 以下の例は、コマンド–tの実際の実行を示しています。 置換演算子(<)は、「Arr」という名前の配列にデータを入力するために使用されます。 Mapfile命令は、printfステートメントから「Ana」、「Paul」、「George」などの標準の入力文字列を受け取り、各行に改行(-t)を追加します。 コマンド全体を実行すると、mapfileはテキスト行をサイレントにスキャンし、各行を特定の配列変数に配置します。 printfステートメントの使用は、文字列要素が配列要素と見なされているのに対し、「n」はシェルで改行を与えるために使用されていることを示しています。

$ mapfile -T Arr <<(printf“ Ana nPaul nGeorge n”)
$ printf“%s n”“ $ {Arr[@]}」

以下の例は、インデックスを使用して配列の個々の項目を印刷する方法を示しています。

$ printf“%s n”“ $ {Arr[0]}」
$ printf“%s n”“ $ {Arr[1]}」
$ printf“%s n”“ $ {Arr[2]}」
$ printf“%s n”“ $ {Arr[3]}」

以下の例では、echoコマンドは、配列変数MAPFILEのすべての要素をスペースで区切って出力します。

$ printf“ Ana nPaul nGeorge n” | (mapfile; echo“ $ {MAPFILE[@]}”)

mapfile命令の-tオプションを使用して、これを修正し、改行を削除する場合があります。

$ printf“ Ana nPaul nGeorge n” | (mapfile -t; echo“ $ {MAPFILE[@]}”)

結論

この記事は、Ubuntu20.04システムでbashmapfile命令を使用して、変数内の配列から入力テキストデータを取得し、それに応じて表示する方法について説明しました。 「-n」および「-t」オプションを指定してmapfile命令を試し、bashシェルで配列の出力の異なる形式を取得しました。

The post MapfileBashLinuxコマンド appeared first on Gamingsym Japan.