IT/Unix & Linux

특수 파라미터 변수 - Special parameters

슈다루냥 2019. 10. 25.

 

안녕하세요. 슈다 입니다.

쉘 스크립트 등에서 사용하는 특수 파라미터 (Special Parameters) 종류 및 의미하는 바를 알아보겠습니다.

 

$0, $? 등이 포함되어 작성된 쉘 스크립트를 보신 적이 있을 텐데요. 해당 변수는 특수 파라미터로 다양하게 응용이 가능한 변수 입니다.

대표적인 특수 파라미터는 아래 표로 확인할 수 있습니다.

특수 파라미터 내용
$$ 현재 실행되는 스크립트의 PID (터미널 창에서 $$ 확인시 로그인된 터미널 쉘의 PID 출력)
$0 실행되는 쉘 스크립트의 이름
$1 실행되는 쉘 스크립트에 입력된 첫번째 위치 파라미터
$2 실행되는 쉘 스크립트에 입력된 두번째 위치 파라미터
$3 실행되는 쉘 스크립트에 입력된 세번째 위치 파라미터
$* 실행되는 쉘 스크립트의 모든 위치 파라미터
$# 실행되는 쉘 스크립트의 모든 위치 파라미터 수
$? 마지막 명령어 결과의 리턴 종료값
$! 백그라운드로 실행된 마지막 프로세스의 PID

* $4, $5 ... 은 네번째, 다섯번째, 그 이상의 위치 파라미터 값을 가지게 됩니다.

  두자리수 이상의 위치 파라미터는 괄호로 감싸줍니다.  =  ${10} ${11}

 

표로만 보면 이해가 잘 가지 않을 수 있습니다.

실제 스크립트를 수행하여 각 파라미터마다 어떠한 값을 출력하는지 확인해 보겠습니다.

 

우선 단순히 스크립트만 실행했을 경우 입니다.

위치 파라메터 없이 스크립트 실행

내용을 살펴보면

$$ : 27394290  =  parameter.sh 스크립트가 실행될 때의 PID

$0 : parameter.sh  =  스크립트 명

$1 ~ $3  =  위치 파라미터 값 이지만 입력된 내용이 없으므로 출력 없음

$*  =  입력된 내용이 없으므로 출력 없음

$#  =  입력된 내용이 없으므로 0 출력

$?  =  마지막 명령어의 쉘 리턴값 입니다. 0 은 정상, 0 외의 값은 비정상 이거나 각 상황에 맞는 리턴값을 출력합니다.

        실행하고자 하는 명령이 정상적으로 실행되었는지 $? 으로 확인하여 변수로 사용하고 응용할 수 있습니다.

$!  =  parameter.sh 스크립트 안에 echo "" & 라는 백그라운드로 실행할 명령어가 포함되어 있습니다.

        해당 명령어가 백그라운드로 수행될 때 부여된 PID가 출력됩니다.

 

 

이제 위치 파라미터에 값을 넣어 실행시켜 보겠습니다.

스크립트 뒤에 띄어쓰기로 구분한 변수를 입력하여 줍니다.

위치 파라미터에 1, 2, 3 을 입력하였다.

 

위치 파라미터에 1, 2, 3 을 입력하여 실행한 결과 입니다. 아무것도 입력하지 않았을 때와 차이점이 보이시나요?

$1 ~ $3 의 변수 값에 내용이 출력된 것을 확인할 수 있습니다.

 

$1  =  첫번째 위치 파라미터 내용, 위 예제에서는 [ 1 ] 을 입력하여 1이 출력

$2  =  두번째 위치 파라미터 내용, 위 예제에서는 [ 2 ] 를 입력하여 2가 출력

$3  =  세번째 위치 파라미터 내용, 위 예제에서는 [ 3 ] 을 입력하여 3이 출력

$#  =  위치 파라미터가 입력된 수 인 3 출력

 

각각의 특수 파라미터를 사용하여 스크립트를 작성한다면 보다 다양한 상황에 응용이 가능합니다.

반응형