Published Book on Amazon
All of IOT
Starting with the Latest Raspberry Pi from Beginner to Advanced – Volume 1 |
|
All of IOT
Starting with the Latest Raspberry Pi from Beginner to Advanced – Volume 2 |
출판된 한글판 도서
최신 라즈베리파이(Raspberry Pi)로 시작하는 사
물인터넷(IOT)의 모든 것 – 초보에서 고급까지 (상) |
|
최신 라즈베리파이(Raspberry Pi)로 시작하는 사
물인터넷(IOT)의 모든 것 – 초보에서 고급까지 (하) |
Original Book Contents
10.2 Shell 환경
10.2.1 변수(variable)
10.2.1.1 변수(variable)란?
변수(variable)는 컴퓨터의 메모리에 일시적으로 자료를 보관할 수 있는 장소이다. 파일과 다른 점은 파일에 있는 컴퓨터가 종료된 이후 다시 컴퓨터를 켜면 그대로 자료를 유지하고 있는데, 변수에 있는 자료는 컴퓨터가 종료되면 소멸되고 없어진다는 것이다.
변수를 정의할 때 여러 단어를 연결하여 사용하고자 하면 "_"를 사용하여 서로 연결하여 사용할 수 있다.
RUN_MODE="daemons" PIDDIR=/var/run/samba |
10.2.1.2 변수의 종류
변수에는 적용되는 범위에 따라서 시스템 변수와 local 변수가 있는데, 각각 다음과 같은 특징이 있다.
● 시스템 변수(system variable)
시스템 변수는 Raspberry Pi 시스템 수준에서 사전에 예약된 이름으로 정의된 것으로 어떤 script에서나 동일한 변수 이름을 가지고 있으며, script에서 별도의 다른 용도로 사용할 수 없는 변수이다. $PATH 같은 변수가 시스템 변수이다.
이러한 시스템 변수에는 다음과 같은 여러 가지가 있다.
■ 환경변수(environment variable)
변수명 | 설명 |
BASH | 쉘 이름 |
BASH_VERSION | 쉘 버전 |
COLUMNS | 컬럼 |
LINES | 라인 |
HOME | 홈 directory |
LOGNAME | 로그인 명 |
OSTYPE | OS 타입 |
PATH | 패스 설정 값 |
PS1 | prompt 설정 값 |
PWD | working directory |
SHELL | 쉘 이름 |
USERNAME | 현재 로그인된 유저 ID |
■ 기타 특수한 System 변수
변수명 | 설명 |
$$ | 해당 프로세스의 PID값 |
$? | 가장 최근에 실행한 명령의 종료값 |
$# | 프로그램에 전달된 인수의 개수 |
$0 | 명령수행 시 명령의 이름을 기억하는 변수값 |
$n | 전달된 n번째 인수(ex:$1,$2) 매개변수 $1, $2…는 명령이 실행될 때 전달되어 오는 값들이 순서에 따라 할당되는 변수이다 |
$* | 전달된 인수들 전체를 하나의 문자열로 표시함 |
$@ | 전달된 인수들 전체를 문자열의 목록으로 표시함 |
$! | 마지막으로 실행된 백그라운드 프로세스 pid 값 |
● 지역 변수(local variable)
반면 local 변수는 해당 script가 실행될 때에만 사용되는 변수로서, 해당 script의 실행이 종료되면 그 변수 자체가 없어지고 값도 없어지므로, 다음 번에 해당 script가 실행될 때는 새로운 값을 가지고 다시 시작하게 된다. 다른 script에서는 동일한 이름의 변수를 다른 용도로 사용할 수 있으며, 서로 간에는 전혀 상관관계가 없다.
10.2.1.3 변수의 자료형 선언
Shell에서 변수는 사용하기 전에 정의하지 않는다. 변수에 저장되어 있는 값은 기본적으로 문자열로 취급되고, 대소문자가 구별된다. 숫자인 경우도 기본적으로는 문자열로 취급되지만 산술연산에 대해서는 일반 숫자와 동일하게 계산을 허용한다.
변수에 대해서 자료형을 제한적으로 사용하고자 할 때는 "declare"나 "typeset" 문장을 사용하여 명시적으로 정의한 후 사용한다.
[명령 형식]
declare/ typeset <변수> <Type> |
[명령 개요]
■ 변수에 대해서 사용할 수 있는 자료형을 지정한다.
■ user 권한 -- 일반 user.
[상세 설명]
■ 다음과 같은 자료형을 지정할 수 있다.
■ -i -- 정수
■ -a -- 배열
■ -f -- 함수
■ -r -- 읽기 전용
■ -x -- Shell 외부에서 사용 가능 변수
10.2.1.4 "unset" 명령 – 변수의 정의 삭제
"unset" 은 이전에 정의되어 있는 변수를 삭제해서 정의되지 않은 것으로 만드는 것이다.
[명령 형식]
unset <변수> |
[명령 개요]
■ 이전에 정의되어 있는 변수를 삭제한다.
■ user 권한 -- 일반 user.
[상세 설명]
■ unset 이후에는 해당 변수가 존재하지 않는다.
[사용 Example]
pi@raspberrypi ~ $ var="1234" |
pi@raspberrypi ~ $ echo $var |
1234 |
pi@raspberrypi ~ $ unset var |
pi@raspberrypi ~ $ echo $var |
-bash: var: unbound variable |
10.2.1.5 "set" 명령 - Shell 호출 parameter 설정
Shell script 파일을 호출할 때, parameter를 넘겨줄 수 있다. 이 parameter를 script 내부에서 참조할 때 순서대로 $1, $2, ….라는 변수로 참조할 수 있다. set 명령은 script를 호출할 당시에 주어지는 이러한 parameter의 값을 설정한다.
[명령 형식]
set value1 value2 ….. |
[명령 개요]
■ script를 호출할 때 전달되는 parameter의 값을 설정한다.
■ user 권한 -- 일반 user.
[상세 설명]
■ 설정되는 value는 순서에 따라 $1, $2, $3….에 할당된다.
[사용 Example]
pi@raspberrypi ~ $ set "This is 1" "This is 2" |
pi@raspberrypi ~ $ echo $1 |
This is 1 |
pi@raspberrypi ~ $ echo $2 |
This is 2 |