설정되는 배열의 정의는 무엇입니까?

설정되는 배열의 정의는 무엇입니까?
  1. 설정되는 배열의 정의는 bash 매뉴얼에서 가져온 것입니다.

    아래 첨자가 할당된 경우 배열 변수는 설정된 것으로 간주됩니다. 빈 문자열은 유효한 값입니다.

    • 이것은 배열 요소의 수가 0보다 큰 경우에만 배열이 설정된다는 것을 의미합니까?

    • 아래의 배열은 세트입니까 myarr=()?

    • 설명서에도 나와있어요

      매개변수에 값이 할당된 경우 매개변수가 설정됩니다. 빈 문자열은 유효한 값입니다.

      배열도 매개변수이므로 배열 세트의 정의가 매개변수 세트의 정의와 어떻게 일치합니까?

      예를 들어 myvar=""설정되어 있지만 myarr=()설정되어 있습니까? 값이 할당 되었습니다 myarr. null인가요?

  2. 설정 배열에 대한 정의가 다릅니다.https://unix.stackexchange.com/a/246703/674

    yash 및 zsh를 제외하고 배열을 지원하는 쉘의 경우 인덱스 0의 요소가 설정되지 않은 한 배열 변수가 설정된 것으로 보고하지 않습니다.

    bash(ksh93 또는 zsh 제외)의 경우 키가 "0"인 요소가 설정되지 않으면 연관 배열 유형의 변수가 설정된 것으로 보고되지 않습니다.

    0 Bash 매뉴얼에 따르면 구독이 없는 배열 이름은 실제로 전체 배열이 아닌 인덱스/키로 인덱싱된 요소를 참조하기 때문에 이 정의가 올바르지 않습니까?

    아래 첨자가 없는 배열 변수를 참조하는 것은 아래 첨자 0이 있는 배열 변수를 참조하는 것과 같습니다.

    0그렇다면 이 정의는 실제로 배열이 설정되는 것이 아니라 설정되는 인덱스/키에 의해 인덱싱된 요소에 대한 것입니까 ?

    예를 들어, ${myarr+1}및는 [[ -v myarr ]]배열 애플리케이션에서 myarr변수/매개변수가 설정되었는지 여부를 테스트하는 일반적인 방법입니다. myarr즉, 아니면 myarr[0]전체 배열 입니까 myarr?

  3. 설정되는 쉘 배열의 POSIX 정의는 무엇입니까?

답변1

  • 이것은 배열 요소의 수가 0보다 큰 경우에만 배열이 설정된다는 것을 의미합니까?

예.

  • 다음 배열은 집합 myarr=()입니까?

아니요.

  • 집합 배열의 정의는 집합 매개변수의 정의와 어떻게 일치합니까?

둘 다 동일합니다. 여기에는 문제가 없다고 생각합니다.

  • 매개변수에 값이 할당된 경우 매개변수가 설정됩니다. 빈 문자열은 유효한 값입니다.

  • ...에 값이 할당된 경우 배열 변수는 설정된 것으로 간주됩니다. 빈 문자열은 유효한 값입니다.


  1. 정의가 다양하네요...

대답은 무엇입니까https://unix.stackexchange.com/a/246703/674테스트 작동 방식에 대한 세부 정보를 설명합니다 [ -n "${var+set}" ]. 설정 여부를 정의하지 않고 일반 변수에 적용하지 않으며 배열에 적용하지 않습니다.

that에 주의해 주십시오 that would not report ....


  1. 설정되는 쉘 배열의 POSIX 정의는 무엇입니까?

POSIX에는 "쉘 배열"이 없습니다.

관련 정보