본문 바로가기

프로그래밍(TA, AA)/스크립트

[쉘스크립트] 쉘스크립트 사용전 기초

쉘스크립트 사용전 기초



로그인 셸 확인 법)

$ echo $SHELL

/bin/bash


일반적으로는 FreeBSD는 tcsh, 리눅스와 Mac은 bash를 로그인셸로 사용합니다. 일부 고성능 셸인 zsh를 사용하는 경우도 있습니다. 로그인셸과 셸 스트립트를 실행하는 셸은 각각 별도이므로 같지 않아도 됩니다. 하지만 tcsh처럼 C셸 계열의 로그인셸을 이용할 때는 명령행에서 쓰는 문법과 셸 스크립트 문법이 일치하지 않으니 주의해야 합니다.



셸스크립트 작성법

에디터는 일반적으로 vi(vim)이나 이맥스(emacs)를 사용하지만 지에디터(gedit) 같은 GUI 에디터를 써도 됩니다. 셸 스크립트 파일명은 자유롭게 지정 가능하지만 관례적으로 확장자를 .sh로 쓰므로 특별한 이유가 없는 한 .sh를 사용합니다.


파일 확장자가 없을 때는 셸 스크립트인지 일반적인 실행 파일인지 구분이 어렵습니다. 그럴 때는 file 명령어로 대상 파일 형식을 확인합니다. 다음 예제에서 script 파일의 형식이 shell script로 표시되었습니다. 따라서 script 파일이 셸 스크립트라는 것을 알 수 있습니다.


$ file script

script: Bourn-Again shell script text executable

$ file command

command: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (users shared libs), for GNU/Linux 2.6.18, stripped


셸 스크립트를 작성했으면 실행하기 전에 문법을 확인하는 -n 옵션을 사용하길 바랍니다. -n 옵션을 사용하면 셸은 스크립트를 한줄씩 읽어서 해석하지만 실행하지는 않습니다. 따라서 작성한 스크립트에 문법 에러가 없는지 실행하기 전에 확인할 수 있습니다.


$ sh -n script.sh

script.sh: line 67: syntax error: unexpected end of file



셸 스크립트 각종 실행 방법


파일에 실행 권한 부여)

$ chmod +x script.sh


chmod 명령어는 퍼미션을 8진수로 설정할 수 있습니다. chmod 명령어에 대한 자세한 내용은 man chmod 명령으로 살펴볼 수 있습니다. 명령행에서 셸 스크립트를 실행할 때 유닉스라면 보통 현재 디렉터리가 경로에 들어있지 않으므로 명시적으로 경로를 지정해도 되지만 현재 디렉터리를 의미하는 ./를 앞에 붙여서 자주 사용합니다.


스크립트 실행하기(현재 디렉터리는 /home/user1/bin이다)

$ /home/user1/bin/script.sh

$ ./script.sh


또한 집계 처리나 감시처럼 정기적으로 실행하는 셸 스크립트는 명령행에서 직접 실행하기보단 cron으로 자동 실행하는 경우가 많습니다.