[쉘 스크립트] 변수
변수
변수 입출력
기본적으로 모든 변수값은 string으로 취급한다. 변수를 선언할 때 ‘=’ 양 옆에는 공백이 없어야 한다.
변수 선언 후 ‘$’를 이용해 선언한 변수를 사용할 수 있다. 만약 $ 가 들어간 문자를 출력하고 싶다면 작은따옴표(‘)로 묶던가 아니면 앞에 역슬래시( \) 를 붙여야 한다. 이 조건 안에 들어간 문자는 string 으로 취급된다.
c++에서 cin과 같이 변수값을 입력받기 위해서 read
명령어를 사용한다.
#!/bin/sh
myvar="HIHI"
echo $myvar
echo "$myvar"
echo '$myvar'
echo \$myvar
echo 변수값 입력
read myvar
echo 새로운 값 : $myvar
exit 0
매개변수
매개변수는 실행하는 명령어 부분들을 각각 변수로 지정한다. 예를 들어 systemctl stop firewalld
는 $0=systemctl, $1=stop, $2=firewalld 로 지정된다.
#!/bin/sh
echo $0 $1 $2 $3
exit 0
환경변수
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 명령어의 확장자 색상 옵션 |
메일을 보관하는 경로 | OSTYPE | 운영체제 타입 |
환경 변수는 export
명령어로 설정할 수 있다. 하지만 export
로 설정된 환경변수는 현재 세션에서만 유효하므로 재부팅 시 초기화된다.
환경 변수를 계속 적용하기 위해서는 .bashsrc 파일에 export
명령문을 작성하면 된다.
작성 후 재부팅 혹은 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
댓글남기기