위치 매개변수 확장과 사용자 정의 배열 확장의 다른 결과

위치 매개변수 확장과 사용자 정의 배열 확장의 다른 결과

아래 명시된 명령 출력의 차이점을 이해하지 못합니다.

INPUT="$@"
echo "$INPUT ${#INPUT} ${#INPUT[@]} ${#@}"
# outputs: a b c 5 1 3

arr=(a b c)
echo "$arr ${#arr} ${#arr[@]}"
# outputs: a 1 3

나는 스크립트를 실행하는 데 사용합니다 ./my_script.sh a b c.

나는 이것이 첫 번째 요소를 echo "$arr" 역참조한 $arr다음 인쇄한다는 것을 알고 있습니다 a. 또한 $INPUT명령을 인쇄하십시오 a b c.

명령 ${#INPUT}${#INPUT[@]}이유의 경우 출력은 각각 5및 입니다 1. ${#arr}명령의 출력 과 비슷하면 안 되나요 ${#arr[@]}?

답변1

배열을 $@다음에 할당합니다.스칼라 INPUTa b c, 결과 는 길이가 5로 평가되고 "배열"의 요소 수가 1인 문자열 입니다.

어쩌면 배열을 배열로 할당하려고 하시나요?

input=( "$@" )

관련 정보