
辞書(連想配列)が空であることを確認するには?私は宣言を1つだけ使用しますdeclare -A dict
。先ほど宣言したけどキーがないかな
答え1
連想配列の長さ(またはその中の要素数)は、通常の${#array[@]}
配列と同様に使用できます。この数が0の場合、配列は空です。
if [ "${#array[@]}" -ne 0 ]; then
echo 'array is not empty'
fi
一般的なシェル変数の場合は、testを使用して-v
存在をテストできます。
if [ -v variable ]; then
echo 'variable exists'
fi
...しかし、配列では直感的ではありません。したがって、配列が存在するが空であるか宣言されていないことを確認するためにこれを確実に使用することはできません。
0
配列のキーが存在すると、テストは真になります。
答え2
最新バージョンの場合は、bash
test [[ -z ${dict[@]@K} ]]
(または[[ ! ${dict[@]@K} ]]
)を次のように使用することもできますset -u
。@K
パラメータコンバータは、「」または引用符で囲まれた一連のキーと値のペアを印刷します。
答え3
[ -z ${!dict[*]} ] && echo "yes" || echo "no" yes
空であることを確認する必要があります。