[쉘 스크립트] 변수

변수

변수 입출력

기본적으로 모든 변수값은 string으로 취급한다. 변수를 선언할 때 ‘=’ 양 옆에는 공백이 없어야 한다.

변수 선언 후 ‘$’를 이용해 선언한 변수를 사용할 수 있다. 만약 $ 가 들어간 문자를 출력하고 싶다면 작은따옴표(‘)로 묶던가 아니면 앞에 역슬래시( \) 를 붙여야 한다. 이 조건 안에 들어간 문자는 string 으로 취급된다.

c++에서 cin과 같이 변수값을 입력받기 위해서 read 명령어를 사용한다.

#!/bin/sh
myvar="HIHI"
echo $myvar
echo "$myvar"
echo '$myvar'
echo \$myvar
echo 변수값 입력
read myvar
echo 새로운 값 : $myvar
exit 0

image

매개변수

매개변수는 실행하는 명령어 부분들을 각각 변수로 지정한다. 예를 들어 systemctl stop firewalld 는 $0=systemctl, $1=stop, $2=firewalld 로 지정된다.

#!/bin/sh
echo $0 $1 $2 $3
exit 0

image

환경변수

OS레벨에서 자주 사용되거나 시스템 환경을 정의하기 위해 리눅스 시스템에 미리 정의된 변수들이다.

주요 환경 변수는 다음 표와 같다.

환경 변수 설명 환경 변수 설명
HOME 현재 사용자의 홈 디렉토리 PATH 실행 팡리을 찾는 디렉토리 경로
LANG 기본 지원되는 언어 PWD 사용자의 현재 작업 디렉토리
TERM 로그인 터미널 타입 SHELL 로그인해서 사용하는 쉘
USER 현재 사용자의 이름 DISPLAY X 디스플레이 이름
COLUMNS 현재 터미널의 컬럼 수 LINES 현재 터미널 라인 수
PS1 1차 명령 프롬프트 변수 PS2 2차 명령 프롬프트
BAASH bash 쉘의 경로 BASH_VERSION bash 버전
HISTFILE 히스토리 파일의 경로 HISTSIZE 히스토리 파일에 저장되는 개수
HOSTNAME 호스트의 이름 USERNAME 현재 사용자의 이름
LOGNAME 로그인 이름 LS_COLORS ls 명령어의 확장자 색상 옵션
MAIL 메일을 보관하는 경로 OSTYPE 운영체제 타입

image

환경 변수는 export 명령어로 설정할 수 있다. 하지만 export로 설정된 환경변수는 현재 세션에서만 유효하므로 재부팅 시 초기화된다.

image

환경 변수를 계속 적용하기 위해서는 .bashsrc 파일에 export 명령문을 작성하면 된다.

image

작성 후 재부팅 혹은 source .bashrc 명령어로 변경된 환경변수를 적용시킬 수 있다.

산술연산

숫자가 입력된 변수로 산수를 하기 위해서는 expr 키워드를 사용한다. 이때 수식은 역따옴표(`)로 묶어야 하며, 메타문자로 사용되는 별표(*) 을 곱하기로 사용하기 위해선 앞에 역슬래시를 붙여야 한다. 괄호 또한 역슬래시를 붙여야 한다.

#!/bin/bash
a=20
b=5

echo 3 + 10 = `expr 3 + 10`

echo a + b = `expr $a + $b`

echo a / b = `expr $a / $b`

echo a \* b = `expr $a \* $b`

echo a % b = `expr $a % $b`

echo '(a+b)/b' = `expr \( $a + $b \) / $b`

exit 0

image

카테고리:

업데이트:

댓글남기기