echo 문의 기본 질문

echo 문의 기본 질문

저는 방금 유닉스를 배우기 시작했고 명령줄 매개변수에 대한 매우 기본적인 질문이 있습니다.

내 스크립트에서 다음을 수행한다고 가정해 보겠습니다.

echo $@ #Now this prints all the command line arguments

args=$@ #Args array will take the command line argument array from $@

echo $args 

여기서 마지막 진술에 문제가 있습니다. echo arrayname첫 번째 인덱스 요소만 인쇄해야 하는데 왜 전체 배열을 표시합니까?

유닉스에서 일반 배열을 취하고 배열 이름이 ARR이라고 말하면 이제 echo ARR을 사용하면 모든 요소 대신 첫 번째 요소가 표시됩니다. 그렇다면 동작이 위의 args와 다른 이유는 무엇입니까?

답변1

$@$@"통합 인덱스"가 있기 때문에 인덱스가 없는 일반 배열 변수와 다르게 동작합니다. 이는 항상 "모든 요소"를 의미합니다.

set -- a b c
echo $@
    a b c
set -x
var=$@
    + var='a b c'
ar=(a b c)
    + ar=(a b c)
echo $ar
    + echo a
    a

답변2

배열 대신 변수를 설정했기 때문에 모든 요소가 인쇄됩니다. 어레이를 설정하려면 다음을 수행해야 합니다.

args=($@)

관련 정보