Shell

쉘 - $#, $*, $@

필유아사 2022. 1. 16. 01:10

shell 에서 사용되는 $#, $*, $@, $# 에 대해 알아본다.

 

$0 : Script를 실행시킬 때 프로그램의 이름이 첫 번째 문자열에 저장
$1, ...$N : argument들이 순서대로 저장
$* : 모든 파라미터들로 구성된 단일 문자열
$@ : 파라미터들을 각각 별도의 구분된 문자로 취급
$# : 위치 매개변수의 갯수가 저장

 

예제 1) $# 

아래와 같은 스크립트 코드가 있다. 파일명은 script1.sh 로 했다.

#!/bin/sh
echo "\$# 예제"
echo " 프로그램명 : $0"
echo " 첫번째 파라미터 : $1"
echo " 첫번째 파라미터 : $2"
echo " 첫번째 파라미터 : $3"
echo "파라미터 갯수 : $#"

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

$ sh script1.sh arg1 arg2 arg3

결과는 아래와 같다. 즉 파라미터가 4개임을 출력한다.

$# 예제
 프로그램명 : script1.sh
 첫번째 파라미터 : arg1
 첫번째 파라미터 : arg2
 첫번째 파라미터 : arg3
파라미터 갯수 : 3

 

예제 2) $@와 $* 차이

아래와 같은 스크립트 코드가 있다. 파일명은 script2.sh 로 했다.

#!/bin/sh
echo "\$@ 예제"
echo "----------"
for param in "$@"
do
    echo $param,
done

echo "\$* 예제"
echo "----------"
for param in "$*"
do
    echo $param,
done

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

$ sh script2.sh A B C

결과는 아래와 같다.

$ sh script2.sh A B C
$@ 예제
----------
A,
B,
C,
$* 예제
----------
A B C,

예제처럼 $@는 N개의 배열처럼 동작하고, $*는 모든 parameter를 한개의 스트링으로 인식한다. 경우에 맞도록 사용하면 되겠다.