ksh - 읽기 명령을 사용하여 설정되지 않은 변수를 배열로 읽기

ksh - 읽기 명령을 사용하여 설정되지 않은 변수를 배열로 읽기

$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='()'

관련 정보