본문 바로가기
IT/리눅스 (Linux)

쉘 스크립트(Shell Script) - 변수(Variable) 사용법 [전역, 지역, 환경]

by 베베야 2022. 2. 16.
728x90

변수(Variable)

리눅스(linux)에서 쉘스크립트 작성시 변수를 사용하는 방법은  "=" 기호를 사용하여 좌측에는 변수명을 우측에는 변수에 들어갈 값을 적어주어야 한다. 주의할 점음 "=" 사이에 공백이 있으면 변수 선언으로 인식하지 않고 오류가 발생하니 한번더 체크하자


변수의 종류

일반적으로 변수 선언 시 아무것도 붙이지 않고 선언하게 되는데 이렇게 선언하게 되면 전역 변수(global variable)로 인식하게된다. 변수의 종류는 아래의 3가지로 선언이 가능하다.

 

 

1. 전역 변수(global variable)

- 현재 실행된 스크립트 파일에서만 유효하다

- 자식 스크립트에서는 사용 할 수 없다.

 

2. 지역 변수(local variable)

- 변수 선언시 변수 명 앞에 local을 붙여서 선언한다. (local str="HI")

- 선언된 지역내부(함수) 안에서만 사용이 가능하다.

 

3.  환경 변수(environment variable)

- 변수 선언시 변수 명 앞에 export을 붙여서 선언한다. (export str="HI")

- 자식 스크립트에서 사용 가능하다.

- 환경 변수 사용시 예약 변수(reserved variable)에 주의해서 사용해야한다.

  (참고로 환경 변수는 .bash_profile에서 정의한다.)

 

예약 변수(Reserved Variable)

문자 설명
HOME 사용자의 홈 디렉토리
PATH 실행 파일을 찾을 경로
LANG 프로그램 사용시 기본 지원되는 언어
PWD 사용자의 현재 작업중인 디렉토리
FUNCNAME 현재 함수 이름
SECONDS 스크립트가 실행된 초 단위 시간
SHLVL 쉘 레벨(중첩된 깊이를 나타냄)
SHELL 로그인해서 사용하는 쉘
PPID 부모 프로세스의 PID
BASH BASH 실행 파일 경로
BASH_ENV 스크립트 실행시 BASH 시작 파일을 읽을 위치 변수
BASH_VERSION 설치된 BASH 버전
BASH_VERSINFO BASH_VERSINFO[0]~BASH_VERSINFO[5]배열로 상세정보 제공
MAIL 메일 보관 경로
MAILCHECK 메일 확인 시간
OSTYPE 운영체제 종류
TERM 로긴 터미널 타입
HOSTNAME 호스트 이름
HOSTTYPE 시스템 하드웨어 종류
MACHTYPE 머신 종류(HOSTTYPE과 같은 정보지만 조금더 상세하게 표시됨)
LOGNAME 로그인 이름
UID 사용자 UID
EUID su 명령에서 사용하는 사용자의 유효 아이디 값(UIDEUID 값은 다를 수 있음)
USER 사용자의 이름
USERNAME 사용자 이름
GROUPS 사용자 그룹(/etc/passwd 값을 출력)
HISTFILE history 파일 경로
HISTFILESIZE history 파일 크기
HISTSIZE history 저장되는 개수
HISTCONTROL 중복되는 명령에 대한 기록 유무
DISPLAY X 디스플레이 이름
IFS 입력 필드 구분자(기본값:   - 빈칸)
VISUAL VISUAL 편집기 이름
EDITOR 기본 편집기 이름
COLUMNS 현재 터미널이나 윈도우 터미널의 컬럼 수
LINES 터미널의 라인 수
LS_COLORS ls 명령의 색상 관련 옵션
PS1 기본 프롬프트 변수(기본값: bash\$)
PS2 보조 프롬프트 변수(기본값: >), 명령을 "\"를 사용하여 명령 행을 연장시 사용됨
PS3 쉘 스크립트에서 select 사용시 프롬프트 변수(기본값: #?)
PS4 쉘 스크립트 디버깅 모드의 프롬프트 변수(기본값: +)
TMOUT 0이면 제한이 없으며 time시간 지정시 지정한 시간 이후 로그아웃

 

변수별 사용방법

1. 전역 변수(global variable)

쉘 스크립트 생성 : vi Gvariable.sh

작성코드

#!/bin/bash

#전역 변수(global variable)
str="global"
echo ${str}

 

결과

쉘 스크립트 생성 : ./Gvariable.sh

선언했던 str변수값인 global이 출력된다.

global

 

2. 지역 변수(local variable)

쉘 스크립트 생성 : vi Lvariable.sh

작성코드

#!/bin/bash

#전역 변수(global variable)
str="global"

#지역 변수(local variable)
str_test() {
	local str="local"
    echo ${str}
}

echo ${str}
str_test

 

결과

쉘 스크립트 생성 : ./Lvariable.sh

지역변수를 전역변수와 동일한 이름인 str로 선언했지만 값이 덮어씌워지지 않고 별도의 값이 출력된 것을 볼 수 있다.

global
local

 

3.  환경 변수(environment variable)

테스트를 위해서는 부모와 자식 2개의 스크립트 파일이 필요하다

- 부모 스크립트 파일명 : export_m.sh

- 자식 스크립트 파일명 : export_c.sh

 

쉘 스크립트 생성 : vi export_m.sh

작성코드

#!/bin/bash
#환경 변수(environment variable)로 선언
export str_test="hellow"

#해당 경로의 스크립트 파일을 실행
/home/test/export_c.sh

 

쉘 스크립트 생성 : vi export_c.sh

작성코드

#!/bin/bash
echo "이 메시지는 export_m.sh의 환경변수를 사용하여 출력됩니다"
echo ${str_test}

 

결과

쉘 스크립트 생성 : ./export_m.sh

export_m.sh 를 실행하게되면 export_c.sh 를 실행하게 되면서 echo ${str_test}를 통해 변수 값인 str_test를 출력합니다.

 

이 메시지는 export_m.sh의 환경변수를 사용하여 출력됩니다.
hellow

 

<참고>

 

쉘스트립트 작성 및 실행방법(Shell Script) - 리눅스 공부

쉘 스크립트란(Shell Script)? 인터프리트(interpret) 방식으로 동작하는 컴파일되지 않은 프로그램이다. 리눅스에서 텍스트 형식으로 저장되며 한줄씩 순차적으로 읽어 커맨드처럼 실행되도록 작성

bebeya.tistory.com

 

반응형
그리드형

댓글