Unix / Linux – シェル配列の使用

スポンサーリンク

本当にわからないとこがあった場合一人では解決できません。
『teratail』とはエンジニア特化型のQ&Aサイトです。 すべてのエンジニアさんが抱えている悩みを共有して 解決するための質問サイトです
無料なのでまずは登録して使ってみてください。メールアドレスだけで登録可能です ----------------------------------------------------------------------------------------

この章では、Unixでのシェル配列の使い方について説明します。シェル変数は単一の値を保持するのに使います。これらの変数はスカラ変数と呼ばれます。

シェルは、配列変数と呼ばれる別の種類の変数をサポートしています。これは、同時に複数の値を保持することができます。配列は、一連の変数をグループ化する方法を提供します。必要な各変数の新しい名前を作成する代わりに、他のすべての変数を格納する単一の配列変数を使用できる機能を持ち合わせています。

箱の出し入れ、アレイですね、

シェル変数について説明したすべての命名規則は、配列の命名中に適用できます。

配列値の定義


配列変数とスカラ変数の違いは、次のように説明できます。

さまざまな生徒の名前を変数の集合として表現しようとしているとします。個々の変数のそれぞれは、次のようなスカラ変数です。

NAME01="tanaka"
NAME02="sato"
NAME03="suzuki"
NAME04="saito"
NAME05="tsutsugo"

1つの配列を使用して上記の名前をすべて格納できます。以下は、配列変数を作成する最も簡単な方法です。これは、そのインデックスの1つに値を割り当てるのに役立ちます。

array_name[index]=value

ここでARRAY_NAMEは、配列の名前があり、インデックスが設定したい配列内のアイテムのインデックスであり、その値は、あなたがその項目に設定する値です。

例として、以下のコマンド –

NAME[0]="tanaka"
NAME[1]="sato"
NAME[2]="suzuki"
NAME[3]="saito"
NAME[4]="tsutsugo"

kshシェルを使用している場合は、配列の初期化の構文は次のとおりです。

set -A array_name value1 value2 ... valuen

bashシェルを使用している場合、ここでは配列の初期化の構文があります。

array_name = (value1 ... valuen)

配列値へのアクセス


配列変数を設定したら、次のようにアクセスします。

${array_name[index]}

ここでARRAY_NAMEは配列の名前であり、そしてインデックスがアクセスされる値のインデックスです。以下にその概念を理解するための例を示します。

#!/bin/sh

NAME[0]="tanaka" NAME[1]="sato" NAME[2]="suzuki" NAME[3]="saito" NAME[4]="tsutsugo"
echo "First Index: ${NAME[0]}"
echo "Second Index: ${NAME[1]}"

上記の例は次の結果を生成します –

$./test.sh
First Index: tanaka
Second Index: sato

配列内のすべての項目には、次のいずれかの方法でアクセスできます。

${array_name[*]}
${array_name[@]}

ここでarray_nameはあなたが使いたい配列の名前です。以下の例は概念を理解するのに役立ちます –

#!/bin/sh

NAME[0]="tanaka" NAME[1]="sato" NAME[2]="suzuki" NAME[3]="saito" NAME[4]="tsutsugo"
echo "First Method: ${NAME[*]}"
echo "Second Method: ${NAME[@]}"

上記の例は次の結果を生成します –

$./test.sh
First Method: tanaka sato suzuki saito tsutsugo
Second Method: tanaka sato suzuki saito tsutsugo

前のページ

次のページ

スポンサーリンク

プログラミングは独学からは挫折の可能性が高いです。まずは無料体験ができる
コードキャンプが本当におすすめ。無料体験でわからないところを聞きましょう。
転職補助つき。カリキュラム終了後に転職紹介をしてくれます。