Linux Bash で配列を使用する
Bash には配列構造があります(一部の言語ではリストと呼ばれます)。この記事では、この構造について説明します。後で、Bash スクリプトで次のトピックを調べます。
- 配列宣言
- 配列内の値にアクセスします
- 配列に新しい値を追加します
- 配列から値を削除します
配列は、類似したデータをまとめて保持するデータ構造です。配列内の各データにはインデックスがあり、最初の要素のインデックスは 0
です。これらのデータには、ループを使用して順次アクセスすることも、データインデックスを使用して個別にアクセスすることもできます。配列を変更したり、新しい値を追加したり、既存の値を削除したりすることもできます。
Bash での配列の使用
配列とは何かがわかったので、Bash での使用を調べることができます。
配列を宣言する
配列は、値を括弧で囲むことによって宣言されます。値の間にはスペースのみがあり、コンマなどの文字はありません。配列宣言の例を以下に示します。
arr=("black" "white" "red" "blue" "green")
次のメソッドを使用して、整数値の配列を宣言できます。
intArr=(1 2 3 4)
intArr=($(seq 1 4))
intArr=({1..4})
これらの例は、1 から 4
の数字を含む配列を宣言しています。
アレイにアクセスする
配列内のデータにアクセスするには、さまざまな方法があります。たとえば、配列全体を出力したり、インデックスを使用して 1つの要素にアクセスしたり、ループを使用して各要素に順番にアクセスしたりできます。それぞれの方法を一つ一つ説明していきましょう。
アレイ全体にアクセスする
[*]
または [@]
コマンドを使用して、配列が保持するすべての値にアクセスできます。たとえば、これらのコマンドを使用して、上記で定義した arr
配列のすべての値を出力してみましょう。
arr=("black" "white" "red" "blue" "green")
echo "With *: ${arr[*]}"
echo "With @: ${arr[@]}"
インデックス付きの要素にアクセスする
配列の最初の要素のインデックスは 0
であり、次の要素のインデックスは順番に増加します。配列内の要素のインデックス番号で要素にアクセスできます。たとえば、以下の Bash コードを使用して、arr
配列の red
値を取得します。
arr=("black" "white" "red" "blue" "green")
echo "${arr[2]}"
ループで配列要素にアクセスする
for
ループを使用して、配列のすべての要素に 1つずつアクセスできます。以下は、arr
配列の各色を画面に出力する Bash スクリプトです。
arr=("black" "white" "red" "blue" "green")
for color in ${arr[@]}; do
echo $color
done
インデックス番号と一緒にこれらの値にアクセスしたい場合は、以下のコードを使用できます。
arr=("black" "white" "red" "blue" "green")
for i in ${!arr[@]}; do
echo "$i: ${arr[$i]}"
done
${!arr[@]}
コマンドは、配列内のすべての値のインデックスを返します。次に、これらのインデックスを使用して要素にアクセスします。
配列に新しい要素を追加する
配列に新しい要素を追加するには、新しい値にインデックス番号を割り当てるか、+=
演算子を使用します。
arr=("black" "white" "red" "blue" "green")
echo "Before adding purple: ${arr[@]}"
arr[5]="purple" # or use arr+=("purple"), exactly same
echo "After adding purple: ${arr[@]}"
配列から要素を削除する
unset
コマンドを使用して、アレイ内のデータを削除したり、アレイ自体を完全に削除したりすることもできます。
arr=("black" "white" "red" "blue" "green")
echo "Before removing white: ${arr[@]}"
unset arr[1]
echo "After removing white: ${arr[@]}"
Yahya Irmak has experience in full stack technologies such as Java, Spring Boot, JavaScript, CSS, HTML.
LinkedIn