티스토리 뷰
흔히 $*와 $@를 구분 없이 많이 사용하고 있는데, 사실 약간은 다르다. 레퍼런스에 보면 아래와 같이 정의되어 있다.
"$*" All the positional parameters (as a single word) *
"$@" All the positional parameters (as separate strings)
무슨 뜻이냐면, $*는 모든 parameter를 하나의 단어로 취급한다는 의미고, $@는 별도의 문자로 취급한다는 의미다. (응?)
다시말해, $*는 입력되는 모든 parameter를 한개의 단어로 취급한다는 뜻. $@는 공백으로 구분된 별도의 문자열로 취급한다는 의미다. 아래와 같은 스크립트 코드가 있다.
#!/bin/sh
echo "================="
echo "\$@ section"
echo "================="
for param in "$@"
do
echo $param,
done
echo "================="
echo "\$* section"
echo "================="
for param in "$*"
do
echo $param,
done
이 스크립트를 실행시켜보자.
$ ./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 차이 (4) | 2016.01.20 |
---|---|
[sh] 문자열 포함 여부 검사 (0) | 2015.12.15 |
[sh] 랜덤 숫자 뽑기 (0) | 2015.11.24 |
[sh] 알아두면 유용한 $() (0) | 2014.04.29 |
[sh] 함수구현 (0) | 2014.04.17 |
댓글
최근에 올라온 글
최근에 달린 댓글
글 보관함
- Total
- Today
- Yesterday