변수(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]배열로 상세정보 제공 |
메일 보관 경로 | |
MAILCHECK | 메일 확인 시간 |
OSTYPE | 운영체제 종류 |
TERM | 로긴 터미널 타입 |
HOSTNAME | 호스트 이름 |
HOSTTYPE | 시스템 하드웨어 종류 |
MACHTYPE | 머신 종류(HOSTTYPE과 같은 정보지만 조금더 상세하게 표시됨) |
LOGNAME | 로그인 이름 |
UID | 사용자 UID |
EUID | su 명령에서 사용하는 사용자의 유효 아이디 값(UID와 EUID 값은 다를 수 있음) |
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
<참고>
'IT > 리눅스 (Linux)' 카테고리의 다른 글
쉘 스크립트(Shell Script) - 특수 매개 변수[$$, $?, $!, $-, $_] (0) | 2022.02.17 |
---|---|
쉘 스크립트(Shell Script) - 위치 매개 변수[$0, $1, $*, $@, $#] (0) | 2022.02.17 |
쉘 스크립트(Shell Script) - 함수(Function) 사용법 (0) | 2022.02.16 |
[리눅스] vi 편집기 여러줄/한줄 주석처리 (0) | 2022.02.16 |
쉘스트립트 작성 및 실행방법(Shell Script) - 리눅스 공부 (0) | 2022.02.16 |
댓글