티스토리 뷰

반응형

Ⅰ. 셸 스크립트

ⅰ. 셸 스크립트 만들기

스크립트는 유닉스 명령과 셸이 제공하는 프로그래밍 구문으로 구성된 텍스트 파일로 유닉스의 여러 작업을 손쉽게 실행할 수 있는 도구로 활용되고 그 실행 방법은 두가지이다.

1. $ bash script

2. $ chmod + x script

$ script

 

ⅱ. 스크립트 파일의 구성요소

- #! 기호

매직 넘버라고 하며, 이 뒤에는 스크립트를 처리할 프로그램(인터프리터)를 지정한다.

커널은 이것을 보고 지정된 프로그램을 실행시키며 스크립트를 해당 인자로 전달한다.

인터프리터를 지정할 때는 옵션을 함께 지정할 수도 있다. 매직 넘버는 항상 스크립트의 첫 행에 있어야 한다.

 

- 주석

주석은 프로그램에 대한 설명으로 #으로 시작한다. 전체 행 모두를 주석으로 처리할 수도 있고, 스크립트 명령문 다음에 나올 수도 있다. 주

 

- 셸 명령

셸의 모든 명령은 스크립트의 내용으로 사용할 수 있다.

 

- 셸 프로그램

셸 스크립트는 유닉스 명령뿐 아니라 각 셸이 제공하는 프로그램을 위한 구문도 사용할 수 있다.

 

Ⅱ. 셸 변수 사용하기

변수의 값이 문자열일 때 문자열 내에 포함된 패턴을 찾아 일부를 제거할 수 있다.

ⅰ. 변수값 활용하기

변수명 = 값

 

 

ⅱ. 셸 변수 문자열 처리하기

 

ⅲ. 명령행 인자 처리하기

스크립트를 실행할 때 인자로 주어진 값을 스크립트 안에서 처리할 수 있다. 포지션 인자라고 불리는 특수 내장 변수들은, 명령행에 입력된 인자의 순서에 따라 이름이 정해지며 주어진 인자를 저장한다.

ⅳ. 인용 부호 처리하기

- 작은 따옴표('')

- 큰 따옴표("")

- 역 슬래시(\)

 

ⅴ. 명령 대체

명령의 출력을 변수로 지정하여 사용하는 것이다. 배시 셸을 포함하여 모든 셸을 백 쿼터(')를 사용하여 명령을 대체한다. 백 쿼터는 쌍으로 사용해야 하며, 배시 셸은 전통적 명령 대체 방법인 백 쿼터 외에 콘 셸에서 도입된 명령 대체 방법인 $(명령) 의 형태도 지원한다.

 

Ⅲ. 사용자로부터 입력 받기

ⅰ. read

셸 내장 명령으로 터미널이나 파일로부터 입력을 받아들인다.

 

ⅱ. here 문서를 통한 입력 : <<

표준 입력을 사용자로부터 직접 받아들이지 않고 자동으로 처리할때 here 문서를 사용한다.

정상적인 키보트 입력은 EOF 문자(^D)로 종료되지만, 스크립트 파일에서는 EOF 문자를 중간에 사용할 수 없기 때문에 이를 대체할 입력 종료 문자를 별도로 지정한다.

 

Ⅳ. 연산자

연산자는 프로그램에서 자료를 다양하게 처리하는 방법을 제공

 

비프 시프트 연산자는 here 문서의 <<와 구분하기 위해 반드시 (()) 사이에 기술하여야 한다.

그리고 (()) 안에서는 저장 연산자(=) 좌우에 공백이 있어도 괜찮지만, let을 쓸 때 공백이 모함되면 ""로 묶어야 한다.

Ⅴ. 제어문

ⅰ.  if문

- if ~ else ~ then

 

- if ~ then ~ elif ~else문

 

ⅱ. 조건 테스트

 

ⅲ. case

case 문은 if/elif/else 대신 사용할 수 있는 구문으로 주어진 변수의 값에 따라 실행할 명령을 따로 지정할 수 있다.

변수의 값이 value 1이면 value 1 다음부터 ;;을 만날 때까지 명령을 실행한다.

;;을 만나면 그 다음의 모든 명령을 건너뛰고 esac 키워드 다음의 명령부터 순차적으로 실행한다.

값의 지정에는 패턴을 표현하는 특수기호나 | 연산자를 사용할 수 있다. 

만약 일치하는 값이 없으면 기본값인 *다음에 나오는 명령을 실행한다.

 

ⅳ. for 문

- 외부 파일의 내용 참조

$(file)을 사용하면 file의 내용을 입력 다아서 white space로 그분되는 단어를 한 번에 한 개씩 처리한다. 사용자 이름을 지정하고 있는 list파일에서 이름을 차례로 읽어서 출력하는 스크립트이다.

 

- 명령행 인자 처리

스크립트 이름과 함께 입력된 명령행 인자는 for 문을 이용해 처리할 수 있다.

 

ⅴ. while 문

주어진 조건 명령의 실행 결과가 참이면 do와 done 사이의 명령을 반복 실행한다. 루프가 반복될 때마다 조건 명령을 다시 실행하며, 조건 명령의 종료 값이 항상 0이라면 무한 반복을 할 수도 있다.

 

ⅵ. until 문

until 문은 조건 명령이 정상 실행될 때까지 주어진 명령을 반복 실행한다. while 문과 반복 실행 조건이 반대라는 점을 제외하고는 거의 유사한 기능을 제공한다.

 

ⅶ. select 문

메뉴를 생성할 수 있는 반복 명령이다. select 문은 list에 지정한 항목을 선택 가능한 메뉴로 만들어 화면에 출력한다.

 

ⅸ. continue

 

Ⅵ. 함수

하나의 이름으로 실행할 수 있는 명령의 집합으로 인자를 전달할 수 있으며 종료값을 가진다.

 

Ⅶ. 디버깅

ⅰ. bash -x를 이용한 디버깅

bash -x 옵션을 주어 스크립트를 실행하면 스크립트의 각 행이 실행될 때마다 화면에 출력한다.

 

ⅱ.trap을 이용한 디버깅

bash -x 방법은 기본적인 실행 여부를 확인할 수는 있지만 실제 변수 안에 저장되는  값을 알수 없다.

이는 스크린트 안에서 시그널을 처리하는 trap을 이용해 해결할 수 있다.

시그널은 실행 중인 프로세스에 정보를 전달하는 메시지로, 가장 대표적인 시그널이 프로세스를 종료시키는 Crtl+c이다.

DEBUG 시그널은 셸이 스크립트를 디버깅하기 위해 생성하는 시그널로 스크립트의 명령이 실행될 때마다 생성된다.

스크립트는 trap 명령을 사용해 시그널을 받았을 때 다른 동작을 수행하도록 처리할 수 있다.

 

반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함