Linux 쉘스크립트 작성해보기

want dev·2023년 3월 29일

ShellScript

목록 보기
3/3

쉘 스크립트 (Shell Script)

shell을 사용해서 프로그래밍을 할 수 있다.
주로 리눅스 등 서버작업의 프로그래밍 시 사용되며 생각보다 자주 사용된다.
쉘 스크립트는 파일안에 스크립트 작성 후, 실행 시 해당 스크립트가 실행되는 방식으로 이루어진다.
파일의 가장 위 첫라인은

#!/bin/bash 

로 시작된다. * 이때 #는 주석을 의미하는 것이 아니다.
쉘 스크립트의 가장 첫 라인에 #!/bain/bash 를 쓰게 됨으로 해서, 내가 사용 하려는 명령어 해석기가 bash 쉘 임을 미리 알려주는 것이다.
일반적으로 스크립트에서 #는 주석기호이지만, 첫라인의 #!/bin/bash 에서의 #은 주석기호가 아니다.
#! 은 스크립트의 제일 앞에서 이 파일이 어떤 명령어 해석기의 명령어 집합인지를 시스템에게 알려주는 역할을 하며, 실행 가능한 쉘 스크립트라는 것을 나타내는 특별한 표시자이다.
#! 바로 뒤에 나오는 것은 경로명으로, 스크립트에 들어있는 명령어들을 해석할 프로그램의 위치를 나타내는데 그 프로그램이 쉘인지, 프로그램 언어인지, 유틸리티인지를 나타낸다.
이 명령어 해석기가 주석은 무시하면서 스크립트의 첫 번째 줄부터 명령어들을 실행시킨다.

쉘스크립트 파일은 실행권한을 가지고 있어야 실행시킬 수 있다.
간단한 쉘 스크립트를 만들어서 실행 해보자.

$ vi for.sh

vi [쉘 파일명]을 입력하여 쉘 파일 생성/편집 모드로 들어간다.
필자는 파일명은 for.sh 로 만들어 보겠다.

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

편집모드 i 를 눌러
첫 라인에 #!/bin/bash 를 써 주고,
실행 스크립트는 echo "forever!" 로 입력해보았다.
*echo명령어는 쉘 프로그래밍 언어에서 출력문이다. "forever!"을 출력하겠다는 의미이다.
일반적인 프로그래밍 언어의 print 명령문이 되겠다.
입력 후 편집모드 종료키인 esc를 눌러 vi가 비활성화 되면
저장후 종료하라는 명령문인 :wq 를 입력하여 저장 후, vi를 종료한다.

ls -l 명령어를 사용하여 for.sh 파일을 확인해보면
-rw-r--r-- 권한으로 즉, 실행권한이 없는 일반파일이 생성이 된 것을 확인할 수 있다.
이 경우 쉘스크립트를 실행(./for.sh) 해보면,
실행 권한이 없기 때문에 '허가거부'=permission denied 메세지가 떨어지면서 실행되지 않는다.
이 파일을 실행할 수 있도록 실행권한 chmod 755 권한을 부여해 준다.

  • 퍼미션 755 설정 : 모든 사용자에게 실행 권한이 주어짐
    실행권한 부여 부, forever.sh 쉘 파일을 실행하면 다음과 같이 스크립트에 입력해두었던 출력문이 실행되어"forever!" 문구가 잘 출력이 된다.

* 실행방법

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

1) ./forever.sh

2) sh forever.sh

3) bash forever.sh
다음과 같은 매커니즘으로 쉘스크립트를 실행할 수 있고
출력문이 아닌 실제 하고자 하는 작업 명령문을 입력해놓으면
길거나 여러개의 명령문을 순차적으로 실행하며
사용자 입장에서는 (실제 실행 프로세스를 모르더라도)간단히 쉘 스크립트를 실행하는 것만으로 작업실행이 가능하다.

shell script를 사용하는 이유?

가장 큰 이유는 반복되는 작업을 자동화하기 위해 스크립트형태로 미리 만들어 놓고 실행만 하도록 하기 위해서이다.
이렇게 하면 스케줄링을 돌려서 파일만 실행하도록 할수도 있고 스크립트의 내용을 몰라도 누구나 실행할 수 있다.
이러한 장점을 가지고 있는 shell script는 모니터링, 데이터 백업, 복구, notification, 보안, 인증 등여러 상황에서 많이 사용된다.

0개의 댓글