본문 바로가기

진리는어디에

쉘 스크립트(shell script) - 변수

Unix Linux에서는 OS 의해 사용되는 기본적인 변수(시스템 변수) 사용자 정의 변수 나뉠 있다.

일반적으로 시스템 변수는 대문자로, 사용자 변수는 소문자로 표기한다.

1. 시스템 변수

PS1

bash 프롬프트

PS2

쉘의 하위 프롬프트 설정

PS3

select 문에서의 프롬프트

PS4

bash debug 모드에서의 프롬프트

HOME

사용자 홈디렉토리

PATH

실행 파일의 디렉토리 경로 지정

BASH

사용 경로

BASH_VERSION

bash 쉘의 버전

ENV

환경 설정 파일

USER

사용자

USERNAME

사용자 이름

SHELL

지정한 쉘의 경로

MAIL

메일 보관 디렉토리 경로

MAILCHECK

메일 확인 주기

MAILPATH

사용자 메일 경로 설정 변수

UID

사용자 UID

GID

사용자 GID

LOGNAME

현재 로그인한 사용자

LINES

터미널의 출력 라인

HOSTNAME

호스트 이름

HOSTTYPE

현재 시스템의 CPU 타입

HISTFILESIZE

히스토리 파일 크기

HISTSIZE

히스토리 사용 개수

OSTYPE

운영체제의 타입

PWD

현재 디렉토리의 절대 경로

TERM

현재 사용 중인 터미널의 종류

COLUMNS

현재 사용 중인 터미널의 크기(기본 80컬럼)

LS_COLORS

파일 출력 명령어 사용시 파일의 종류에 따라 컬러 사용

IFS

인자 분리 매개 변수

CDPATH

디렉토리 패스 설정변수

SECONDS

bash 시작하여 경과된 시간

EUID

현재 로그인한 사용자의 UID

RANDOM

임의의 정수를 생성하는 변수

IGNOREEOF

입력행에서 EOF문자가 입력되었을 쉘의 종료를 제어

TMOUT

지정한 시간에 프롬프트의 입력이 없다면 로그 아웃

외에도 많은 환경 변수들이 존재한다. 이는 env 명령어를 통해 확인 있다.

2.
특별 내장 변수

$$

현재 실행중인 프로세스의 PID

$?

마지막에 실행한 명령어의 종료값을 반환하며 실행한 명령어의 에러 정상 실행을 파악하기 위해 사용

$!

마지막 자식 프로세스의 PID

$#

프롬프트 상에서 실행한 명령어나 함수에 의해 전달된 매개변수에 전달 인자의 개수

#0

명령어 실행 명령어를 저장하는 변수로 위치 매개변수라고

$1,$2…

명령어에 전달된 전달 인수가 공백을 기준으로 각각 저장하며 위치 매개 변수라고

$*

명령어에 전달된 전달 인수 전체를 하나의 문자열로 표시하며 전체가 따옴표로 처리

$@

전달 인수를 문자열의 목록으로 표시하며 인자에 따옴표로 처리

$_

프롬프트나 쉘에서 마지막에 전달된 명령어나 명령어에 전달된 인수 값을 저장하며 쉘명령어에 의해 설정 플래그


3. 일반 변수
사용자 정의 변수에 대해서는 크게 설명 할 것이 없다. 선언 하거나 대입 연산을 할 때는 변수의 이름만을 사용하고, 변수의 값을 참조 할 때는 변수 앞에 $를 붙여 준다. 또한 변수선언을 할때 공백문자가 들어가면 안된다.

#!/bin/bash
my_name="kukuta"  # my_name = "kukuta" (X)
echo $my_name

 

유익한 글이었다면 공감(❤) 버튼 꾹!! 추가 문의 사항은 댓글로!!