아래 명시된 명령 출력의 차이점을 이해하지 못합니다.
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
배열을 $@
다음에 할당합니다.스칼라 INPUT
a b c
, 결과 는 길이가 5로 평가되고 "배열"의 요소 수가 1인 문자열 입니다.
어쩌면 배열을 배열로 할당하려고 하시나요?
input=( "$@" )