Shell script

2024. 11. 13. 16:51디바이스 드라이버

Shell script란?

터미널에서 실행될 수 있는 명령어를 하나의 파일로 묶어서 실행하기 쉽게 만든 것, 모든 Shell script는 반드시 Shebang (사용할 shell 명시)으로 시작해야한다.

Shebang은 사용할 shell script를 명시하는 것으로 script는 명시된 shell에서 동작하게 된다.

 

우선 #!은 스크립트의 맨 앞에서 이 파일이 어떤 명령어 해석기의 명령어 집합인지 시스템에게 알려준다.

그 뒤에 나오는 것은 경로명으로, 명령어들을 해석할 프로그램의 위치를 나타낸다.

보통은 #!/bin/sh를 사용하며, /bin/sh는 sh라는 쉘 프로그램의 경로이다. Shebang 이후에 사용할 명령어들을 나열한다.

 

그 다음 ./<파일 이름>을 입력하면 파일 안의 명령어가 실행이 된다.

 

반복문

 

간단한 shell script 사용 예시이다. 

list에는 1 2 3 4 5가 저장되어있으며 for문을 통해 var이라는 변수는 차례대로 list안의 값들을 받게 된다. 그 다음 var을 출력한다.

filelist에는 `ls`가 들어가 있는데 `ls`는 현재 디렉토리 안에 있는 파일들이다. for문을 통해 현재 디렉토리 안에 있는 파일들의 이름과 함께 !표가 출력된다.

 

조건문

 

반복문을 사용하여 간단한 구구단 예시를 들었다.

s#는 스크립트에 전달된 인자의 개수를 나타내고, $1은 스크립트 실행 시 전달된 첫 번째 인자를 나타낸다.

여기서 if와 elif else를 사용할 수 있는데 if 조건문이 끝나면 fi로 닫아줘야한다.

그다음 조건을 살펴보면 <= , >= 와 달리 -lt -gt가 조건으로 적혀있다.

-gt : >     ,      -ge : >=

-lt : <      ,      -le : <=

-eq(숫자) : ==     ,    -=(문자열) : ==

-ne(숫자) : !=      ,    -!=(문자열) : !=

-e : 파일이 존재하면 참

-d : 파일이 존재하고 디렉토리면 참

위는 shell script에서 사용하는 이항조건과 단항조건이다.

 

result 부분에서 `expr $1 \* $var`이라 되어있는데, expr은 사칙연산 명령어로 expr <숫자1> < 연산자> <숫자2>형식으로 넣어줘야한다. 여기서 곱하기는 *가 아닌 \*를 사용한다.

 

그래서 8을 인자로 넣을 시 8단이 출력된다.