728x90
쉘 스크립트(Shell Script)
- 스크립트 : “영화나 방송의 대본과 각본 따위의 방송 원고”
- 컴퓨터 소프트웨어 : 컴파일 언어, 스크립트 언어
- 컴파일 언어 : 프로그램 작성 –> 컴파일 –> 실행 파일 만들기
- 스크립트 언어 : 인터프리터에 의해 실행됨
- 언어 구조가 쉬워 빨리 배울 수 있음
- 용도에 따라 제한이 있고, 다른 프로그램을 거쳐야 하기 때문에 실행 시간이 오래 걸림
쉘 스크립트 만들기
- 테스트용 쉘 스크립트
$ vi test_script
$ cat test_script
#!/bin/bash
# This is a test script program.
echo “Hello, World~!”
pwd
$
쉘 스크립트에 이름 붙이기
- 유닉스 명령 규칙에 따라 스크립트 파일에 이름 붙임
- 스크립트 기능을 알 수 있도록
- 어느 쉘을 위한 것인지 구분하기 위한 확장자 사용
- 본 쉘 스크립트는 sh, 콘 쉘은 ksh, C 쉘은 csh, 배시 쉘은 bash 사용
- 스크립트 이름으로 키워드, 앨리어스, 내장 명령과 같은 이름을 쓰지 않는게 좋다.
- 배시 쉘에서 명령 실행 순서
- 앨리어스
- 키워드(if, while, until 등)
- 함수
- 내장 명령
- 스크립트와 유닉스 명령, 유틸리티 등(PATH 경로에 있는 실행 가능한 파일)
쉘 스크립트 실행하기
- 실행하는 방법
- 쉘이 실행하도록 스크립트 파일명을 인수로 넘겨주는 방법
- 파일에 실행 권한을 주어 자체적으로 실행하는 방법
$ bash test_script
Hello, World~!
/home/ksshin/Unix/ch13
$ test_script
test_script: command not found
$
- 두 번째 방법으로 실행하기 위해서는 test_script에 실행 권한 필요
- 경로 설정에 현재 디렉토리가 지정되지 않아 오류 메시지 출력됨
- 해결 방법
- ./test_script로 실행
- ~/.profile에서 PATH 변수의 가장 마지막에 .을 추가한 다음 저장한 후 ~/.profile을 실행
$ chmod +x test_script
$ test_script
test_script: command not found
$
$ ./test_script
Hello, World~!
/home/ksshin/Unix/ch13
$
쉘 스크립트 종료하기
- 스크립트는 파일의 마지막 명령을 실행하고 파일의 끝이 exit 명령을 만나면 종료
- 종료 상태를 $? 변수에 저장
- exit 명령
- 종료 값을 지정하며 스크립트를 종료
- 형식 : exit [n]
- 사용 예 : exit, exit 1
$ cat test_exit
#!/bin/bash
# test_exit
exit 20
$ ./test_exit
$ echo $?
20
$
스크립트 파일의 구성요소
- ’#!’ 기호
- 스크립트 첫 행의 #! 기호는 매직 넘버라고 함
- 스크립트를 처리할 프로그램(인터프리터)을 지정(#!/bin/bash)
- 커널이 이것을 보고 지정된 프로그램을 실행, 스크립트를 인자로 전달
- 옵션을 함께 지정할 수도 있음
- 매직 넘버는 항상 스크립트의 첫 행에 있어야 함
- 꼭 필요한가? i) 배시 쉘 기준으로 작성한 프로그램을 C 쉘이 처리하면 오류 발생할 수 있음 ii) 스크립트에서 일반적인 유닉스 명령만 사용하면 이 행은 없어도 됨
- 주석
- 프로그램에 대한 설명으로 #으로 시작
- 전체 행 모두를 주석으로 처리할 수도 있음
- 스크립트 명령문 다음에 나올 수도 있음
- 작성된 스크립트를 이해하기 쉽게 해주므로 주석을 이용한 설명을 빠뜨리지 않는게 좋음
- 쉘 명령
- 쉘의 모든 명령을 스크립트의 내용으로 사용 가능
- 여러 명령을 순차적으로 반복 수행해야 할 때 명령의 입력이 귀찮으면 파일로 작성한 후 저장해 두었다가 필요할 때마다 실행
- 유닉스 시스템은 부팅할 때마다 처리할 다양한 작업을 스크립트로 작성해 실행함
- 스크립트를 찾는 스크립트의 예
$ cat find_script
#!/bin/bash
# find_script : find shell script in /bin & /usr/bin
cd /bin
file * | grep script
cd /usr/bin
file * | grep script
$
- 실행 권한을 부여한 후 실행시킴
$ chmod +x find_script
$ ./find_script | more
bzdiff: POSIX shell script, ASCII text executable
bzexe: POSIX shell script, ASCII text executable
bzgrep: POSIX shell script, ASCII text executable
bzmore: POSIX shell script, ASCII text executable
gunzip: Bourne-Again shell script, ASCII text executable
......
$
- 쉘 프로그램
- 쉘 스크립트는 유닉스 명령뿐 아니라 각 쉘이 제공하는 프로그램을 위한 구문도 사용할 수 있음
- 쉘 변수, 인자 처리, 각종 연산자, 제어문 등 포함
728x90
'프로그래밍 > Unix' 카테고리의 다른 글
쉘 스크립트(Shell Script) 문법 - 사용자로부터 입력 받기 (0) | 2020.05.08 |
---|---|
유닉스/unix 쉘 스크립트(Shell Script) 변수 사용하기 (0) | 2020.05.07 |
[유닉스/unix] 쉘(Shell) 환경 설정 (0) | 2020.04.30 |
[유닉스/unix] 쉘(Shell) 기본 사용법 (0) | 2020.04.30 |
[유닉스/unix] 쉘(Shell)의 기능 및 종류 (0) | 2020.04.30 |