shell은 운영체제에서 사용자가 입력하는 명령을 읽고 해석해 대신 실행해주는 프로그램이다.
쉽게 사용자의 명령어를 해석해 OS가 이해할 수 있게 번역해주는 명령어 해석기이다.
대표적인 Linux 운영체제의 shell에는 bash가 있다.
/bin 경로안에 bash가 존재하는 것을 알 수 있다.
shell script란 shell에서 사용할 수 있는 명령어들의 조합을 모아 만든 batch(script) 파일이다.
python과 유사하게 인터프리터 방식의 프로그램으로, 한줄씩 순차적으로 읽으면서 명령어들을 실행시켜준다.
Shell Script를 활용해 묶어진 명령어 조합을 수행하거나 반복적인 명령어를 단일 명령으로 사용 가능하다. 일반 텍스트 파일로 작성되고, 확장자는 .sh
를 사용한다. script를 작성한 후 실행권한을 부여하고 shell을 통해 실행할 수 있다.
운영체제의 명령어 뿐 아니라, if, for/while 함수 등 프로그래밍 언어에서 제공하는 기능도 사용 가능하다.
ls -al
을 통해서 확인해본 결과 script.sh 파일이 존재한다. 이 shell script를 실행해보고 싶지만 아쉽게도 권한이 없기 때문에 실행할 수 없다.
shell script를 실행하려면 파일에 실행권한을 부여해야한다. chmod
명령어로 권한을 부여할 수 있다. 위는 권한을 부여하기 전의 script.sh
를 볼 수 있다.
chmod +x script.sh
chmod 명령어를 통해서 script.sh의 권한을 변경하니, 실행 가능해진 것을 알 수 있다. +x는 r(읽기),w(쓰기),x(실행) 권한 중 실행 권한을 부여해준 것을 알 수 있다.
위와 같이 실행파일로써 script를 실행할 수 있다. script.sh는 무슨 내용이였길래 이런 출력결과가 나왔을까?
shell script의 기본 구조는 위와 같다. 사진으로 잘 보이지 않을 수 있어 아래에 같은 코드를 적어뒀다.
#! /bin/bash
name="Donghan"
echo "Hi, I am $name"
여기서 중요한 것은 바로 첫번째 줄이다. 파일의 첫번째 줄에 #! /bin/bash라고 적어뒀다.
이것은 Unix 계열 shell script 파일의 필수 구문이다. Sharp(#)와 bang(!)의 합성어로 Shebang이라고 불린다. script 파일의 최상단에 적혀 아래 적혀있는 코드를 해석해줄 인터프리터(shell)의 위치를 절대경로로 지정해주는 것이다. #!은 magic number라고 불리며, 해당 쉘 스크립트가 실행가능하다는 것을 알려준다.
변수명엔 공백이 없고 대소문자를 구분한다. 위의 예시에서 name에 값을 지정하고 출력하는 과정에서 name에 변수가 저장되었고, 이를 string에 출력하고 싶을때, $를 사용하여 변수임을 지칭할 수 있었다.
shell script에서는 조건문을 사용할 수 있다. python과 유사한 형태인데 if
로 시작하고 마지막에 fi
로 마치게 된다는 특이한 구조이다.
여기서 -eq는 동일함을 나타내는 option이다. 자세한 문법은 시행착오를 거치며 정리해나가자
num은 10이다 라고 출력하는 것을 확인할 수 있다.
shell script에서는
for
와 while
등 반복문을 사용할 수 있다. loop의 범위를 ..으로 표현한다.
shell script에서는 함수를 정의하고 호출할 수 있다. greet 함수에 "홍길동"이라는 변수를 넣어 출력하게끔 했다. $1은 첫번째 위치의 인자임을 의미한다.
https://minkwon4.tistory.com/159
chat gpt