配列
shell script
、特にbash
における配列について説明します。
配列の宣言
bashでの配列は以下のように宣言します:
array=("value1" "value2" "value3")
値の取得
配列の要素にアクセスするには、次のようにインデックスを使用します:
echo "${array[0]}" # value1
全要素の取得
echo "${array[@]}" # value1 value2 value3
配列の長さの取得
length=${#array[@]}
echo "$length" # 3
要素の追加
要素の削除
unset array[1] # value2を削除
配列のスライス
指定した範囲の要素を取得するには:
echo "${array[@]:1:2}" # value2 value3
この例では、インデックス1から2つの要素を取得します。
ループ処理
配列のすべての要素に対してループ処理を行うには、次のようにします:
for val in "${array[@]}"; do
echo "$val"
done
これがbash
の配列に関する基本的な説明です。
詳細
了解しました。bashにおける配列について、もう少し詳しく説明いたします。
-
連想配列
bash 4以降では、連想配列もサポートしています。これはキーと値のペアを持つ配列です。
宣言:
要素の追加:
assoc_array["key1"]="value1"
assoc_array["key2"]="value2"
値の取得:
echo "${assoc_array["key1"]}" # value1
すべてのキーの取得:
echo "${!assoc_array[@]}"
-
配列の要素の操作
-
要素の置換
array=("apple" "banana" "cherry")
array[1]="blueberry"
echo "${array[@]}" # apple blueberry cherry
-
末尾から要素を取得
echo "${array[@]: -1}" # cherry
-
文字列を配列に分割
以下のコマンドは、スペースを区切り文字として文字列を配列に変換します。
string="a b c d"
array=($string)
echo "${array[2]}" # c
-
配列要素の検索
配列の中で特定の文字列を含む要素を検索することもできます。
array=("apple" "banana" "cherry")
for fruit in "${array[@]}"; do
if [[ $fruit == *"a"* ]]; then
echo "$fruit contains an 'a'"
fi
done
-
配列の要素の順序を逆にする
array=("a" "b" "c" "d")
reversed_array=("${array[@]}" | tac -s ' ')
echo "${reversed_array[@]}" # d c b a
bashにおける配列は非常に柔軟で、多様な操作が可能です。もちろん、上記に挙げたものは一部の例に過ぎません。