모든 위치파라미터를 저장한다는 점에서는 동일하나, 쌍따옴표(")로 둘러쌓이면 다른 의미를 갖는다.
기억하기 쉽게 설명하자면, "$*"는 모든 파라미터를 한개의 문자열로 퉁치고, "$@"는 인용문자(', ")의 의미를 살려 파라미터를 배열로 취급한다.
다음의 예제를 실행해보면 쉽게 알 수 있다.
코드
all.sh
#!/bin/bash
set "hong gildong" jangbogo janggilsan
declare -i cnt=0
for i in $* # 이 부분을 $*, $@, "$*", "$#" 네가지로 변경하며 실행하면 차이를 알 수 있음
do
echo $cnt
echo $i
cnt+=1
done
실행
./all.sh
결과
$*, $@ 인 경우
0
hong
1
gildong
2
jangbogo
3
janggilsan
"$*" 인 경우
0
hong gildong jangbogo janggilsan
"$@" 인 경우
0
hong gildong
1
jangbogo
2
janggilsa
'Linux' 카테고리의 다른 글
[LINUX] 문자열 표현식 판단 test, 싱글브라켓, 더블브라켓 차이 (0) | 2022.08.17 |
---|---|
[LINUX] 헷갈리는 표현식 및 정수연산방법 (0) | 2022.08.09 |
[LINUX] 리눅스 쉘스크립트 정수 산술 방법 정리 (0) | 2022.08.02 |
[LINUX] 자주쓰는 sed, awk 명령어 형식 정리 (0) | 2022.07.11 |
[LINUX] 자주쓰는 명령어 정리 (0) | 2022.01.30 |