$an_unset_var가 처음으로 사용되는 설정되지 않은 변수인 다음 ksh 스크립트가 있습니다.
read -A arr <<< "$an_unset_var"
echo ${#an_unset_var}
echo ${#arr[*]}
명령을 실행하면 다음과 같은 결과가 나타납니다.
0
1
read 명령을 사용하여 설정되지 않은 변수를 배열로 읽어들이면 배열에 빈 요소가 입력되는 이유는 무엇입니까? 이 빈 요소가 배열의 유효한 셀 수 있는 요소로 간주되는 이유는 무엇입니까?
답변1
빈 문자열을 배열로 읽어 들입니다. 배열이 설정 해제된 다음 첫 번째 요소가 빈 문자열로 설정됩니다.
빈 문자열은 완벽하게 유효한 데이터입니다. 무슨 일이 일어날 것이라고 예상했는지 잘 모르겠습니다.
동등한 명령 세트는 다음과 같습니다.
unset arr
arr[0]=""
arr
이제는 요소가 하나만 있는 배열입니다. 해당 요소는 빈 문자열입니다.
답변2
그냥 코멘트: bash와 ksh의 차이점
$ ksh -c 'read -A a <<<""; typeset -p a'
typeset -a a=('')
$ bash -c 'read -a a <<<""; declare -p a'
declare -a a='()'