ã¨ãããéåä¼6
目次:
配列は、最も使用されている基本的なデータ構造の1つです。 配列は、その中に複数の変数を格納できる変数であると考えることができます。
、Bash配列について説明し、Bashスクリプトでそれらを使用する方法を説明します。
バッシュ配列
Bashは、1次元の数値インデックス付きの連想配列タイプをサポートしています。 数値配列は整数を使用して参照され、連想配列は文字列を使用して参照されます。
数値インデックス配列は、負のインデックスを使用して末尾からアクセスできます。
-1
のインデックスは最後の要素を参照します。 インデックスは連続している必要はありません。
ほとんどのプログラミング言語とは異なり、Bash配列要素は同じデータ型である必要はありません。 文字列と数字の両方を含む配列を作成できます。
Bashは多次元配列をサポートしていません。また、配列でもある配列要素を持つことはできません。
配列に格納できる要素の最大数に制限はありません。
Bash配列の作成
Bashの配列はさまざまな方法で初期化できます。
数値インデックス配列の作成
Bash変数は型指定されていないため、変数は宣言せずにインデックス付き配列として使用できます。
配列を明示的に宣言するには、declare builtinを使用します。
declare -a array_name
インデックス配列を作成する1つの方法は、次の形式を使用することです。
array_name=value_1 array_name=value_2 array_name=value_n
index_*
は正の整数です。
数値配列を作成する別の方法は、空のスペースで区切られた括弧内の要素のリストを指定することです:
array_name=(element_1 element_2 element_N)
上記の形式を使用して配列が作成されると、インデックス付けはゼロから始まります。つまり、最初の要素のインデックスは
0
ます。
連想配列の作成
数値インデックスとは異なり、連想配列は使用する前に宣言する必要があります。
連想配列を宣言するには、
-A
(大文字)オプションを指定した組み込みの
declare
使用します。
declare -A array_name
連想配列は、次の形式を使用して作成できます。
declare -A array_name array_name=value_foo array_name=value_bar array_name=value_xyz
index_*
は任意の文字列を指定できます。
次の形式を使用して、連想配列を作成することもできます。
declare -A array_name array_name=(=value_foo =value_bar =value_xyz)
配列操作
Bash配列の構文は、最初は少し奇妙に見えるかもしれませんが、この記事を読むとより意味があります。
参照要素
単一の要素を参照するには、要素のインデックスを知る必要があります。
次の構文を使用して、任意の要素を参照できます。
${array_name}
配列要素にアクセスするための構文は、ほとんどのプログラミング言語の構文に似ています。 シェルのファイル名展開演算子を回避するには、中括弧
${}
が必要です。
インデックスが
1
要素を出力しましょう:
## declare the array declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## print element echo ${my_array}
Helium
## declare the array declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## print all elements echo "${my_array}"
Hydrogen Helium Lithium Beryllium
@
と
*
の唯一の違いは、フォーム
${my_array}
が二重引用符で囲まれている場合です。 この場合、
*
は、配列要素がスペースで区切られた単一の単語に展開されます。
@
は、各配列要素を個別の単語に展開します。 これは、フォームを使用して配列要素を読み書きするときに特に重要です。
配列のキーを印刷するには、
!
配列名の前の演算子:
${!array_name}
以下に例を示します。
## declare the array declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## print all elements echo "${!my_array}"
配列の長さ
配列の長さを取得するには、次の形式を使用します。
${#array_name}
構文は、配列名の前に
#
文字が追加されたすべての要素を参照する場合と同じです。
## declare the array declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## array Length echo ${#my_array}
配列をループします
配列内の各項目を反復処理する最も一般的な方法は、forループを使用することです。
declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## Array Loop for i in "${my_array}" do echo "$i" done
上記のコードは配列を反復処理し、各要素を新しい行に出力します。
Hydrogen Helium Lithium Beryllium
すべてのキーと値を印刷する方法の例を次に示します。
declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## Array Loop for i in "${!my_array}" do echo "$i" "${my_array}" done
0 Hydrogen 1 Helium 2 Lithium 3 Beryllium
配列をループする別の方法は、配列の長さを取得し、
C style
ループを使用することです。
declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") # Length of the array length=${#my_array} # Array Loop for ((i=0; i < ${length}; i++)) do echo $i ${my_array} done
0 Hydrogen 1 Helium 2 Lithium 3 Beryllium
新しい要素を追加する
bash配列に新しい要素を追加し、そのインデックスを指定するには、次の形式を使用します。
my_array="New Element"
以下に例を示します。
declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## add new element my_array="Aluminum" ## print all elements echo "${my_array}"
Hydrogen Helium Lithium Beryllium Aluminum
インデックスを指定せずに新しい要素を配列に追加する別の方法は、
+=
演算子を使用することです。 1つまたは複数の要素を追加できます。
declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## add new elements my_array+=(Cobalt Nickel) ## print all elements echo "${my_array}"
Hydrogen Helium Lithium Beryllium Cobalt Nickel
要素を削除する
単一の要素を削除するには、要素のインデックスを知る必要があります。 要素は、
unset
コマンドを使用して削除できます。
unset my_array
例を見てみましょう:
declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## remove element unset my_array ## print all elements echo "${my_array}"
結論
数値インデックス付きの連想配列を作成する方法を説明しました。 また、配列を反復処理し、配列の長さを計算し、要素を追加および削除する方法も示しました。
バッシュターミナル