[shell script] $*, $@의 차이

HYEOB KIM·2022년 4월 21일
0

Shell

목록 보기
38/71

$*$@는 큰 차이가 있습니다.

$* : 모든 매개변수를 하나의 문자열로 가짐.
$@ : 모든 매개변수를 필드로 구분된 단어들로 가짐.

이 차이는 아래의 스크립트를 통해 실행시켜 보면 차이를 알 수 있습니다.

$ cat test1
#!/bin/bash
for word in "$*"
do
        echo " \$* : $word"
done

for word in "$@"
do
        echo " \$@ : $word"
done

$ ./test1 A B C D E
 $* : A B C D E
 $@ : A
 $@ : B
 $@ : C
 $@ : D
 $@ : E

코드 리뷰

  • $*$@는 큰따옴표가 씌워져 있습니다.

큰따옴표 없이 수행하면 어떻게 될까요?

$ cat test1
#!/bin/bash
for word in $*
do
        echo " \$* : $word"
done

for word in $@
do
        echo " \$@ : $word"
done

$ ./test1 A B C D E
 $* : A
 $* : B
 $* : C
 $* : D
 $* : E
 $@ : A
 $@ : B
 $@ : C
 $@ : D
 $@ : E

모든 매개변수를 구분해서 출력하는 것을 확인할 수 있습니다.

profile
Devops Engineer

0개의 댓글