티스토리 뷰

개발/Shell Script

[sh] "$*" 과 "$@"의 차이

Jaeyeon Baek 2015.11.30 13:54


흔히 $*와 $@를 구분 없이 많이 사용하고 있는데, 사실 약간은 다르다.


레퍼런스에 보면 아래와 같이 정의되어 있다.


"$*" All the positional parameters (as a single word) *

"$@" All the positional parameters (as separate strings)


무슨 뜻이냐면, $*는 모든 parameter를 하나의 단어로 취급한다는 의미고,


$@는 별도의 문자로 취급한다는 의미다. (응?)


다시말해, $*는 입력되는 모든 parameter를 한개의 단어로 취급한다는 뜻.


$@는 공백으로 구분된 별도의 문자열로 취급한다는 의미다.


아래와 같은 스크립트 코드가 있다.


이 스크립트를 실행시켜보자.

./prog aa bb cc


결과는 아래와 같다.

root@localhost:tmp# ./prog aa bb cc

=================

$@ section

=================

aa,

bb,

cc,

=================

$* section

=================

aa bb cc,

root@localhost:tmp#


예제처럼 $@는 N개의 배열처럼 동작하고, $*는 모든 parameter를 한개의 스트링으로 인식한다.


경우에 맞도록 사용하면 되겠다.

'개발 > Shell Script' 카테고리의 다른 글

[sh] expect prompt와 shell script 안에서의 expect 차이  (0) 2016.01.20
[sh] 문자열 포함 여부 검사  (0) 2015.12.15
[sh] "$*" 과 "$@"의 차이  (0) 2015.11.30
[sh] 랜덤 숫자 뽑기  (0) 2015.11.24
[sh] 알아두면 유용한 $()  (0) 2014.04.29
[sh] 함수구현  (0) 2014.04.17
댓글
댓글쓰기 폼