리눅스 bash 사전이 비어 있는지 확인하십시오.

리눅스 bash 사전이 비어 있는지 확인하십시오.

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

최신 버전의 경우 bashtest [[ -z ${dict[@]@K} ]](또는 [[ ! ${dict[@]@K} ]])를 다음과 함께 사용할 수도 있습니다 set -u. @K매개변수 변환기는 '' 또는 따옴표로 묶인 키-값 쌍의 시퀀스를 인쇄합니다.

답변3

[ -z ${!dict[*]} ] && echo "yes" || echo "no" yes 

비어 있는지 확인해야합니다.

관련 정보