설정되는 배열의 정의는 bash 매뉴얼에서 가져온 것입니다.
아래 첨자가 할당된 경우 배열 변수는 설정된 것으로 간주됩니다. 빈 문자열은 유효한 값입니다.
이것은 배열 요소의 수가 0보다 큰 경우에만 배열이 설정된다는 것을 의미합니까?
아래의 배열은 세트입니까
myarr=()
?설명서에도 나와있어요
매개변수에 값이 할당된 경우 매개변수가 설정됩니다. 빈 문자열은 유효한 값입니다.
배열도 매개변수이므로 배열 세트의 정의가 매개변수 세트의 정의와 어떻게 일치합니까?
예를 들어
myvar=""
설정되어 있지만myarr=()
설정되어 있습니까? 값이 할당 되었습니다myarr
. null인가요?
설정 배열에 대한 정의가 다릅니다.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
?설정되는 쉘 배열의 POSIX 정의는 무엇입니까?
답변1
- 이것은 배열 요소의 수가 0보다 큰 경우에만 배열이 설정된다는 것을 의미합니까?
예.
- 다음 배열은 집합 myarr=()입니까?
아니요.
- 집합 배열의 정의는 집합 매개변수의 정의와 어떻게 일치합니까?
둘 다 동일합니다. 여기에는 문제가 없다고 생각합니다.
매개변수에 값이 할당된 경우 매개변수가 설정됩니다. 빈 문자열은 유효한 값입니다.
...에 값이 할당된 경우 배열 변수는 설정된 것으로 간주됩니다. 빈 문자열은 유효한 값입니다.
- 정의가 다양하네요...
대답은 무엇입니까https://unix.stackexchange.com/a/246703/674테스트 작동 방식에 대한 세부 정보를 설명합니다 [ -n "${var+set}" ]
. 설정 여부를 정의하지 않고 일반 변수에 적용하지 않으며 배열에 적용하지 않습니다.
that
에 주의해 주십시오 that would not report ...
.
- 설정되는 쉘 배열의 POSIX 정의는 무엇입니까?
POSIX에는 "쉘 배열"이 없습니다.