안녕하세요. 슈다 입니다.
쉘 스크립트 등에서 사용하는 특수 파라미터 (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 ~ $3 의 변수 값에 내용이 출력된 것을 확인할 수 있습니다.
$1 = 첫번째 위치 파라미터 내용, 위 예제에서는 [ 1 ] 을 입력하여 1이 출력
$2 = 두번째 위치 파라미터 내용, 위 예제에서는 [ 2 ] 를 입력하여 2가 출력
$3 = 세번째 위치 파라미터 내용, 위 예제에서는 [ 3 ] 을 입력하여 3이 출력
$# = 위치 파라미터가 입력된 수 인 3 출력
각각의 특수 파라미터를 사용하여 스크립트를 작성한다면 보다 다양한 상황에 응용이 가능합니다.
'IT > Unix & Linux' 카테고리의 다른 글
ssh key 파일의 from옵션을 이용한 IP 접근 제한 설정 (0) | 2019.11.18 |
---|---|
[AIX] TCP Dump - iptrace, ipreport (0) | 2019.11.15 |
nmon analyzer 없이 CPU 사용률 확인하기 (0) | 2019.10.23 |
암호화된 password 생성하기 - openssl passwd (0) | 2019.10.18 |
nohup명령 사용법과 logfile명 변경하여 생성하기 (0) | 2019.10.17 |