728x90
반응형

개요

  • Shell에서 $0, $1, $2, $*, $@, $# 는 특별한 의미를 갖음
특수 변수 설명
$0 Script를 실행시킬 때 프로그램의 이름이 포함된 첫 번째 문자열을 저장
$1, ...$N  입력 값들이 순서대로 저장되며, 위치 매개변수(Positional Parameter)라고 표현
$*  모든 위치 매개변수를 담고 있는 단일 문자열
$@  $* 과 비슷하나 $@는 "$1", ..."$N"을 의미
$# 위치 매개변수의 개수를 저장
$? 쉘에서 최근 실행한 명령어의 종료 상태를 담은 변수
$$ 쉘 스크립트의 프로세스 ID를 저장
$_  마지막 인수를 출력하는 변수를 저장

 

 

실습

$0, $1, $2, $*, $@, $#

  • $0 : 첫번째 문자열이 저장되기 때문에 실행 명령어인 ./s_var.sh를 저장
        ./s_var.sh  a  b  c  d  e

  • $1, $2 : 실행 명령어를 제외, 차례대로 위치에 따라 매개변수를 저장
       ./s_var.sh  a  b  c  d  e

  • $* : 모든 위치 매개변수를 담은 문자열 저장
       ./s_var.sh  a  b  c  d  e

  • $@ : $1 ~ $N 위치의 매개변수를 저장
       ./s_var.sh  a  b  c  d  e

  • $# : 위치 매개변수 개수 5개를 저장
       ./s_var.sh  a  b  c  d  e

  • $? : 최근 명령어의 종료 상태 저장
       (0) -> 명령어 종료 상태 정상

  • $$ : 스크립트의 PID 저장

 

 

' ' 구분자

  • 띄어쓰기를 구분자로 위치 매개변수를 저장
  • 변수 내 띄어쓰기가 필요한 경우 구분자인 '  ' 사용
        ./s_var.sh  'a  b  c'  d  e

 

  • 띄어쓰기를 구분자로 'a b c'와 d 사이 띄어쓰기가 없어 a b cd$1에 저장됨 

 

 

$? 

  • 최근 명령어의 종료 상태가 정상(0)일 경우

 

  • 최근 명령어의 종료 상태가 비정상 일 경우

 

  • true / false에 대한 명령어 상태 (0) / (1)

 

 

 

 

$_

  • 마지막 위치 매개변수 저장
       ./s_var.sh  a  b  c  d

 

 

 

728x90

+ Recent posts