728x90
반응형

CGI를 전문적으로 쓰기에 앞서 먼저 BASH 쉘 스크립트에 대해 이해해야 한다

BASH는 리눅스나 맥의 쉘 환경에서 동작하는 일종의 스크립터라고 보면 된다.

ls 라고 치면 파일 리스트가 뜨는것도 BASH의 스크립트 처리에 의해 이루어지는것이라고 보면 된다.

 

그럼 이번엔 BASH스크립트의 기본에 대해 설명하고 넘어가도록 하겠다.

 

1. 변수 선언

 

BASH에서의 변수 선언은 이름=값 의 형태이다. 값은 기본적으로 문자열 형태이다.

주의) 변수 이름과 = 과 값 사이는 공백을 두지 않는다. 공백을 주면 에러가 뜬다.

 

a=1

b="add"('도 가능)

c=add

의 형태가 모두 가능하며 3 가지 모두 문자열 타입이다.

 

BASH문법에서 한가지 다른점이 있다면 ``라는 그레이브라고 하는 따옴표 종류인데,

이건 명령어나 스크립트 처리 결과를 변수에 저장하는 역할을 한다.

한마디로

 

l=`ls -al`

 

을 입력하면 ls -al의 실행 결과가 l에 저장되여 l을 출력하면 파일 리스트를 볼 수 있는것이다

현재 디렉토리를 변수에 저장하고 싶다면 

 

dir=`pwd`

 

라고 입력하면 된다.

 

BASH에서 $[변수 이름]의 형태는 특정 변수에 있는 값을 출력하겠다는 뜻이다.

 

a=$c 라고 입력하면 c변수에 있는 값이 a에 대입된다.

 

공백이 없는 문자열의 경우 따옴표 입력이 필요없지만 공백이 있을 경우 따옴표를 붙여주는게 좋다.

 

변수의 출력은 echo라는 명령어로 실행한다.

 

여기서 주의할 점은 echo a라고 입력하면, a가 출력되니 echo $a라고 입 력해서 변수의 값을 echo 명령어로 보내야 한다는 점이다. 

a=Hello BASH

b=$a

echo $a -> Hello BASH

echo $b -> Hello BASH

 

2. 연산

 

BASH에서는 모든 변수가 문자열 타입이다. 직접 연산을 하려고 하면 연산식 자체가 변수에 대입된다

즉, 

 

a=1+2를 입력하면 1+2라는 문자열이 변수 a에 대입되어 연산이 되질 않는다.

 

유닉스 운영체제에서는 expr이라는 연산을 위한 표현식을 처리해주는 스크립터 프로그램이 따로 존재한다.

여기서 한가지 문제가 있는데 변수 a에서 1+2를 붙여 썼지면 여기서는 1 + 2 같이 연산자 사이에 공백을 넣어줘야 표현식을 인식한다는 점

즉 

 

b= `expr 1 + 2`

 

를 입력해야 올바른 값이 대입된다.

 

계산식과 결과를 각각 저장하고 싶다면

 

a="1 + 2"

b=`expr $a`

echo "$a = $b"

 

라고 입력하면 결과는

 

1 + 2 = 3 이 된다.

 

연산자(기호) 는 각각

1 + 1

2 (덧셈)   

4 - 1 

3 (뺄셈) 

3 \* 2 

6 (곱셈; 곱셈의 경우에는 *앞에 \(가끔 원화표시)을 붙여줘야 한다) 

6 / 2

2 (나눗셈의 몫)

6 % 2

0 (나눗셈의 나머지) 

3 = 2

0 (항등관계 비교: 참이면 1, 거짓이면 0)

3 != 2

1 (비등관계 비교: 참이면 1, 거짓이면 0)

3  > 2, 3 < 2

1, 0 (대소관계 비교: 참이면 1, 거짓이면 0)

3 >= 3, 2 <= 3

1, 1 (크거나 같음, 작거나 같음)

728x90
반응형

'UNIX&LINUX > 쉘스크립트' 카테고리의 다른 글

소소한 쉘스크립트 Tip 하나  (0) 2014.07.14
쉘스크립트 기초  (0) 2014.07.14
Class file : createNewFile  (0) 2014.06.05
쉘스크립트 참조 블로그  (0) 2014.05.16
쉘 스크립트 레드마인  (0) 2014.05.13
[OS][LINUX][SHELL]쉘 스크립트  (0) 2014.05.13
[OS][LINUX][SHELL] 쉘 개요  (0) 2014.05.13
[쉘스크립트 스터디] 5주차 정리  (0) 2014.05.13
블로그 이미지

nineDeveloper

안녕하세요 현직 개발자 입니다 ~ 빠르게 변화하는 세상에 뒤쳐지지 않도록 우리모두 열심히 공부합시다 ~! 개발공부는 넘나 재미있는 것~!

,