사전(연관 배열)이 비어 있는지 확인하는 방법은 무엇입니까? 나는 단지 선언 하나를 사용합니다 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
비어 있는지 확인해야합니다.