# 連想配列の宣言
declare -A hash=(
[りんご]=200
[みかん]=120
)
echo "------------------------------"
echo "連想配列の値をループ"
for val in "${hash[@]}"; do
echo "${val}"
done
echo "------------------------------"
echo "連想配列のキーをループ"
for key in "${!hash[@]}"; do
echo "${key} : ${hash[$key]}"
done
stdout
連想配列(要素数の取得とキーの存在チェック)
code
# 連想配列の宣言
declare -A hash=(
[りんご]=200
[みかん]=120
)
echo '------------------------------'
echo '連想配列の要素数を取得'
echo "要素数 : ${#hash[@]}"
echo '------------------------------'
echo '連想配列にキーが存在するかチェック'
for key in みかん りんご バナナ; do
if [[ -n "${hash[${key}]}" ]]; then
echo "${key}は存在します"
else
echo "${key}は存在しません"
fi
done
stdoutcode
# -u 設定されていない変数やパラメータを展開しようとした場合、エラーにする
set -u
# 連想配列の宣言
declare -A hash=( [A]=200 )
# :- でデフォルト値に置換しているのでエラーにならない
if ! [[ -n "${hash[B]:-}" ]]; then
echo "1. Bは存在します"
fi
# hash[B]は設定されていないのでエラーになる
if ! [[ -n "${hash[B]}" ]]; then
echo "2. Bは存在します"
fi
stdoutstderrcode
# -u 設定されていない変数やパラメータを展開しようとした場合、エラーにする
set -u
# 連想配列の宣言
declare -A hash=( [A]=200 )
# :- でデフォルト値に置換しているのでエラーにならない
if [[ -z "${hash[B]:-}" ]]; then
echo "1. Bは存在しません"
fi
# hash[B]は設定されていないのでエラーになる
if [[ -z "${hash[B]}" ]]; then
echo "2. Bは存在しません"
fi
stdoutstderr
連想配列(値の削除)
code
# 連想配列の宣言
declare -A hash
for i in {1..10}; do
hash["key-${i}"]="$(printf '%2s' "${i}")"
done
echo "削除前:" "${hash[@]}"
# 連想配列の要素を削除
unset hash['key-1']
unset hash['key-5']
unset hash['key-10']
echo "削除後:" "${hash[@]}"