BASHプログラミング
 Computer >> コンピューター >  >> プログラミング >> BASHプログラミング

Bashの連想配列でデータを制御する

シェルスクリプト、Pythonスクリプト、C ++、さらにはScratchのいずれであっても、コードを記述したことがある場合は、変数が不可欠であることをご存知でしょう。コンピューターとコーダーは変数をウェイステーションとして使用し、密かに情報をやり取りします。たとえば、シェルスクリプトでユーザーの名前を処理する必要がある場合は、変数を設定し、ユーザー名を変数に入れてから、コンピューターに変数に対して何かを行うように指示します(許可されたユーザーのリストと照合します)。 、 例えば)。変数は、コードを動的に実行できるようにするため重要です。変数は、コードを実行するたびに変更されることが予想される情報のプレースホルダーです。

しかし、変数は非常に一般的であるため、扱いにくくなる可能性もあります。多くの場合、コードプロジェクトに非常に多くの変数を収集するため、それらすべてを追跡することはほぼ不可能です。関連するすべての変数の前に共通の文字列(user_name、user_pass、user_timeなど)を付けるなどの巧妙な規則を使用するか、簡単に参照できるようにそれらのマスターリストをどこかに作成できますが、それを追跡するオーバーヘッドがありますすべてが課税になる可能性があります。

この問題に対する1つの答えは、従来、アレイでした。これらは、Bashなどのシェルスクリプト言語を含むほとんどのコーディング言語でうまく機能しています。

ほとんどのシェルは、インデックス付き配列を作成、操作、およびクエリする機能を提供します。平易な英語では、インデックス付き配列は、接頭辞として数字が付いたもののリストです。このリストと割り当てられた番号は、1つの変数にまとめられているので、コード内で簡単に「持ち運び」できます。

ただし、Bashには連想配列を作成する機能が含まれており、これらの配列は他の配列と同じように扱われます。連想配列を使用すると、番号付きの値だけでなく、キーと値のペアのリストを作成できます。

任意のキーに値を割り当てることができます:

$ declare -A userdata
$ userdata[name]=seth
$ userdata[pass]=8eab07eb620533b083f241ec4e6b9724
$ userdata[login]=`date --utc +%s`

任意のキーをクエリします:

$ echo "${userdata[name]}"
seth
$ echo "${userdata[login]}"
1583362192

配列に期待する通常の配列操作のほとんどが利用可能です。たとえば、すべての値を一覧表示できます。

$ echo "${userdata[*]}"
8eab07eb620533b083f241ec4e6b9724 seth 1583362192

アレイ全体を表示できます:

$ typeset -A
declare -A BASH_ALIASES='()'
declare -A BASH_CMDS='()'
declare -A userdata='([pass]="8eab07eb620533b083f241ec4e6b9724"
[name]="seth"
[login]="1583362192" )'

unset を使用して、配列からアイテムを削除することもできます コマンド:

$ unset userdata[pass]
$ typeset -A
[...]
declare -A userdata='([name]="seth"
[login]="1583362192" )'

最後に、アレイ全体を閉じることができます。

$ unset "userdata[*]"

データの配列

配列は、関連データを一緒に保存するための便利なツールです。ほとんどの場合、単純な古い変数を使用できますが、データの統合とインデックス付けを維持するために、単一のデータ「オブジェクト」の属性を配列に格納する方が論理的である場合があります。たとえば、 utmpから取得したログイン名と時刻を処理している場合 、関連付ける方が便利です 2つのデータオブジェクトを明確な関係のない別々の変数として保存するのではなく、時間を参照したユーザーのログイン時間。

さらに、変数とは異なり、配列にデータを格納する前に配列のエントリが存在する必要はありません。保存する前に、保存されるデータの量を正確に知る必要はありません。これは、制御または予測できないデータを処理している場合、つまり utmpで何人のユーザーを期待できるかわからない場合に大きな利点になります。 ある日から次の日まで、すべてのエントリを含むスクリプトを作成するのは困難です。ただし、配列を使用する場合は、1つの配列を宣言してその配列にデータを読み込み、取り込むデータがなくなるまで新しいキーと値のペアを作成するだけです。

配列は強力であり、Bash以外のプログラミング言語では一般的です。今すぐ使い始めましょう!


  1. 声で Windows 10 PC を操作する方法

    音声認識の黎明期には、ロボットのようにゆっくり話したとしても、単語の半分が認識されれば幸運でした。最近では、すべてのスマートフォンになんらかの音声アシスタントが搭載されており、メモをすばやく取ったり、アプリケーションを開くなどのタスクを実行したりできます。 ただし、Windows 10 コンピューターをお持ちの場合は、音声で Windows 10 を制御することもできます。これは単なる優れた機能ではありません。これは生産性を大幅に向上させるものであり、特定の障害を持つ人々にとっては、コンピューターを制御する効果的な方法です。 コントロール vs ディクテーション 声で Windows

  2. Slack から Microsoft Teams に移行してデータを持ち歩く方法

    Microsoft Teams に移行することにした場合は、Slack から簡単にデータを引き継ぐこともできます。このプロセスは、IT 管理者と専門家が行うのが最適であり、管理者がデータを移動する際に従うべきいくつかの手順があります。最新の Teams ガイドでは、Slack から Teams に移行する方法について説明します。 ステップ 1:移行を計画する Slack から Teams に移行するための最初のステップには、移行の計画が含まれます。使用している Slack プランによって、エクスポートできるものとできないものが決定され、Teams に移行されることに注意してください。 Sl