Back-end/Linux

[linux] 간단한 쉘 스크립트 (Shell Script) 작성 및 실행 해보기.

cheersHena 2021. 4. 28. 21:08
반응형

쉘 스크립트 (Shell Script) 

shell을 사용해서 프로그래밍을 할 수 있다.

주로 리눅스 등 서버작업의 프로그래밍 시 사용되며 생각보다 자주 사용된다.

쉘 스크립트는 파일안에 스크립트 작성 후, 실행 시 해당 스크립트가 실행되는 방식으로 이루어진다.

파일의 가장 위 첫라인은

#!/bin/bash 

로 시작된다. * 이때 #는 주석을 의미하는 것이 아니다. 

쉘스크립트 파일은 실행권한을 가지고 있어야 실행시킬 수 있다. 

 

간단한 쉘 스크립트를 만들어서 실행 해보자. 

$ vi forever.sh

vi [쉘 파일명]을 입력하여 쉘 파일 생성/편집 모드로 들어간다. 

필자는 파일명은 forever.sh 로 만들어 보겠다. 

* shell script의 파일 형식은 관습적으로 "sh" 확장자를 사용한다. 이는 정해진 규칙이라기보다 쉘 스크립트라는 것을 표시하기 위함이다. 

 

 

 

 

 

편집모드 i 를 눌러

첫 라인에  #!/bin/bash 를 써 주고, 

실행 스크립트는 echo "forever!" 로 입력해보았다.

 

*echo명령어는 쉘 프로그래밍 언어에서 출력문이다. "forever!"을 출력하겠다는 의미이다.

일반적인 프로그래밍 언어의 print 명령문이 되겠다. 

 

입력 후 편집모드 종료키인 esc를 눌러 vi가 비활성화 되면 

저장후 종료하라는 명령문인 :wq 를 입력하여 저장 후, vi를 종료한다. 

 

ls -l 명령어를 사용하여 forever.sh 파일을 확인해보면 

-rw-r--r-- 권한으로 즉, 실행권한이 없는 일반파일이 생성이 된 것을 확인할 수 있다.

이 경우 쉘스크립트를 실행(./forever.sh) 해보면, 

실행 권한이 없기 때문에 '허가거부' 메세지가 떨어지면서 실행되지 않는다.

 

이 파일을 실행할 수 있도록 실행권한 chmod 755 권한을 부여해 준다. 

* 퍼미션 755 설정 : 모든 사용자에게 실행 권한이 주어짐

실행권한 부여 부, forever.sh 쉘 파일을 실행하면 다음과 같이 스크립트에 입력해두었던 출력문이 실행되어

"forever!" 문구가 잘 출력이 된다. 

* 실행방법

실행방법은 명령어 3가지 방법이 있다.

1) ./forever.sh

2) sh forever.sh

3) bash forever.sh

필자는 1번 방법으로 실행하였다. 

 

다음과 같은 매커니즘으로 쉘스크립트를 실행할 수 있고 

출력문이 아닌 실제 하고자 하는 작업 명령문을 입력해놓으면 

길거나 여러개의 명령문을 순차적으로 실행하며 

사용자 입장에서는 (실제 실행 프로세스를 모르더라도)간단히 쉘 스크립트를 실행하는 것만으로 작업실행이 가능하다. 

 

실제 작업 명령문 ex) 

 

 

+ 보너스 공부  #!/bin/bash 란? 

쉘 스크립트를 만들때,  가장 첫 라인에

#!/bin/bash 

를 왜 써야 하는지에 대하여 알아보자. 

 

쉘 스크립트의 가장 첫 라인에  #!/bain/bash 를 쓰게 됨으로 해서, 내가 사용 하려는 명령어 해석기가 bash 쉘 임을 미리 알려주는 것이다. 

일반적으로 스크립트에서 #는 주석기호이지만, 첫라인의 #!/bin/bash 에서의 #은 주석기호가 아니다.

 #! 은 스크립트의 제일 앞에서 이 파일이 어떤 명령어 해석기의 명령어 집합인지를 시스템에게 알려주는 역할을 하며, 실행 가능한 쉘 스크립트라는 것을 나타내는 특별한 표시자이다.

 

#! 바로 뒤에 나오는 것은 경로명으로, 스크립트에 들어있는 명령어들을 해석할 프로그램의 위치를 나타내는데 그 프로그램이 쉘인지, 프로그램 언어인지, 유틸리티인지를 나타낸다.

이 명령어 해석기가 주석은 무시하면서 스크립트의 첫 번째 줄부터 명령어들을 실행시킨다.

 

거의 대부분의 상업용 유닉스 및 리눅스 에서는 기본 본쉘인 #!/bin/sh 을 사용한다. 

(필자도 리눅스 환경에서 테스트 했기 때문에 #!/bin/sh 를 사용하였다. )

실제 /bin/sh 경로를 조회해보면 bash 쉘에 링크를 걸어두고 있는것을 확인할 수 있다.  

즉, 스크립트를 실행하면, /bin/sh 에 연결된 bash 쉘의 기능을 사용하는 것이다.

 

"#!" 뒤에 나오는 경로는 정확히 Full PATH를 기록 해야 한다.

만약 PATH를 잘못 적게 되면, 스크립트를 돌렸을 때 거의 대부분 "Command not found"라는 에러 메세지를 만날것이다.

 

 

 

shell script를 사용하는 이유?

가장 큰 이유는 반복되는 작업을 자동화하기 위해 스크립트형태로 미리 만들어 놓고 실행만 하도록 하기 위해서이다.

이렇게 하면 스케줄링을 돌려서 파일만 실행하도록 할수도 있고 스크립트의 내용을 몰라도 누구나 실행할 수 있다. 

 

이러한 장점을 가지고 있는 shell script는 모니터링, 데이터 백업, 복구, notification, 보안, 인증 등

여러 상황에서 많이 사용된다.

 

 

반응형