![위치 매개변수 확장과 사용자 정의 배열 확장의 다른 결과](https://linux55.com/image/143284/%EC%9C%84%EC%B9%98%20%EB%A7%A4%EA%B0%9C%EB%B3%80%EC%88%98%20%ED%99%95%EC%9E%A5%EA%B3%BC%20%EC%82%AC%EC%9A%A9%EC%9E%90%20%EC%A0%95%EC%9D%98%20%EB%B0%B0%EC%97%B4%20%ED%99%95%EC%9E%A5%EC%9D%98%20%EB%8B%A4%EB%A5%B8%20%EA%B2%B0%EA%B3%BC.png)
아래 명시된 명령 출력의 차이점을 이해하지 못합니다.
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=( "$@" )