Wednesday, March 13, 2019

Bash 쉘 프로그래밍 - 1. 쉘 프로그래밍 ( Shell Programming )이란?

안녕하세요. 썬구루입니다. 이 게시물에서는 bash 쉘 프로그래밍에 대해 알아보도록 하겠습니다.

■ 쉘(Shell)이란 무엇인가?

리눅스에서 쉘(Shell)이란 사용자와 리눅스 커널(Kernel) 간에 인터페이스 역할을 하는 프로그램입니다. 사용자로부터 입력받은 명령을 토큰으로 분류, 해석하여 존재하는 명령인지 명령의 형식은 맞는지를 확인한 후 커널에게 처리를 요청합니다. 커널은 적절한 하드웨어 자원을 분배하여 명령을 처리한 후 결과를 돌려주고 쉘은 사용자가 알아볼 수 있는 형태로 바꿔 출력합니다.


여러분들이 SSH, TELNET 원격 접속 또는 물리/가상 터미널을 열게되면 쉘 (Shell)을 하나 할당받게 되며 그 쉘을 사용해서 여러분들은 운영체제의 명령을 실행하게 되어 있습니다. 리눅스, 유닉스에서 다양한 쉘을 사용할 수 있는데 종류는 아래와 같습니다.

- sh, bash, csh, ksh, tcsh 등등...

■ 쉘 스크립트 (Shell Script) 란 무엇인가?

쉘 스크립트는 리눅스/유닉스 쉘에 의해 실행되도록 설계된 컴퓨터 프로그램입니다. 

https://en.wikipedia.org/wiki/Shell_script 에 정의된 글이 나와 있으며 저가 생각하는 쉘 스크립트(Shell Script) 는 리눅스/유닉스 명령과 쉘에서 제공하는 문법적 내용이 들어가 있는 실행 가능한 파일입니다. 실행 파일 내용의 해석기(Interpreter)로 쉘을 사용하는 것입니다. 아래 name.sh 파일 내용을 보면 echo와 name 리눅스/유닉스 명령을 들어가 있는 것을 알 수 있습니다. 이것을 name.sh 쉘 스크립트 파일 또는 name.sh 스크립트 파일이라고 부르는 것이죠.

# more name.sh

#!/bin/bash
#
# Name return shell script
#

echo -n " What\' your name : "
read NAME
echo "Your name is $NAME"

■ 쉘 프로그래밍 (Shell Programming) 이란 무엇인가?

쉘 프로그래밍 (Shell Programming) 이란 무엇인가? 프로그래밍이란 뜻은 프로그램을 만들기라는 뜻이 있습니다. Java나 C 등 그들만에 언어체계가 있듯이 쉘(Shell)도 함수, 변수, 흐름제어, 반복문(for, if, while 등등) 같은 기능을 가지고 상황에 따라 다르게 처리되는 쉘 스크립트를 만들 수 있습니다. 그래서 쉘 프로그래밍(Shell Programming) 이란 쉘의 내장된 기능을 사용한 프로그램 만들기 정도로 보면 될 것 같다.

아래는 쉘의 흐름제어 (Flow Control) 기능을 사용하여 만든 쉘 스크립트 입니다. 사용자가 입력한 나이를 받아 19세 이상이면 성인, 18세 이하이면 미성년자로 출력되게 if 문을 사용하였습니다.

# more age.sh

#!/bin/bash
#
# age return shell script
#

echo -n "How old are you : "
read AGE

if [ $AGE -gt 18 ]; then
 echo "나이 $AGE.  성인입니다."
else
 echo "나이 $AGE. 미성년자입니다."
fi

■ 사용할 쉘 (Shell)과 운영체제

쉘 프로그래밍에서 사용할 쉘은 배시 쉘(Bash Shell)입니다. 배시 쉘 (Bash Shell)은 본 쉘 (Bourne Shell)과 다른 쉘의 기능이 추가된 본 쉘를 대체할 대체품으로 브라이언 폭스(Brian Fox)에 의해 개발된 유닉스 쉘입니다. 리눅스의 기본 쉘이며 유닉스 운영체제에도 요즘은 기본적으로 탑재되어 있습니다. 테스트를 위해 사용할 운영체제는 CentOS 7.3 리눅스 운영체제 이고 운영체제 설치 시 기본적으로 사용할 수 있는 쉘은 아래와 같습니다.

# more /etc/shells

/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin
/bin/tcsh
/bin/csh 

꼭 이 버전을 사용하지 않아도 쉘 스크립트를 실행시키는데 무리는 없습니다. 하지만 서버인프라 내용이 이 버전 기준으로 되어 있기 때문에 가급적이면 동일한 운영체제를 사용해 주시길 바랍니다. 자.. 그럼 쉘 프로그래밍 세계로 들어가 볼까요?




No comments:

Post a Comment