본문 바로가기
IT 프로그래밍 관련/리눅스 시작하기

Ubuntu 쉘 스크립트 (생성 , 연산, if-else, case-esac)

by 지나는행인 2021. 3. 31.
728x90

쉘 스크립트란 .

쉘의 명령들을 로직에 따라 실행시키기 위해 작성한 파일이다.

(명령을 모아 프로그램으로 만든다.)

 

 

쉘 스크립트는 먼저 스크립트파일을 생성하고, 안에서 내용을 작성 후 해당 파일을 실행시킨다.

 

1) 스크립트파일 생성

 

텍스트 에디터(vim) 을 통해서 파일명.sh 로 파일을 생성한다.

 

첫째 행에는 특수주석인 #!/bin/sh 로 시작을 알리고,

 

마지막 행에는 exit 0 을 작성함으로 종료를 알린다.

* test.sh 파일을 생성. 

 

2) 스크립트파일 실행

스크립트파일을 실행할때는  (현재 디렉토리에 파일이 있는경우)

 

> sh 파일명

> ./파일명           으로 실행이 가능하나,  아래의 경우는 따로 권한이 필요하기 때문에 위의 실행을 쓴다.

 

 

 

## 쉘 스크립트 작성문법

쉘 기존의 변수에 관련된 내용을 그대로 사용한다.

변수 불러올때는 마찬가지로 $ 사용.

* 변수 저장 및 스크립트 실행화면

 

수식을 계산할 때는 ` ` (역따옴표)로 묶고, 안에 expr키워드와 수식을 작성한다.

* 곱하기 기호와 (, )괄호는 앞에 반드시 \ (역슬래쉬) 를 붙인다.

수식 계산식(역따옴표) 안에서는 어절 단위로 무조건 띄어쓰기를 해야함.

* 스크립트 실행화면  ,  스크립트 작성화면

 

 

* ** 파라미터 변수 사용 가능.

$0 부터 ..

예를 들어, apt -y install galculator 라는 명령은 $0 = apt, $1 = -y, $2=install $3=galculator 에 대응된다.

* 스크립트 실행화면  ,  스크립트 작성화면

( 스크립트 작성에서 $0은 실행시 파일명을 뜻하고 1부터는 파일명 다음부터의 인자로 들어가는 것을 순서대로 말한다.

여기서 $0은 expression1.sh(파일명)  , $1 은 10 $2 는 20 으로  오른쪽 계산식에 따라

답은 30이 나온다.

 

 

* 곱셈식 활용 화면

 

 

*** if - else 문법

C언어의 if와 비슷하나 문법이 살짝 다르다.

조건이 같다는 '='로 쓰고, 같지않다는 '!='로 쓴다

기본 문법 틀로는

 

if [ 조건 ]                  <--  if 와 대괄호, 조건사이에 공백이 들어간다.

then

    참을때 실행내용

else

    그렇지 않을 때 실행내용

 

fi             <--- 끝냄

 

 

로  사용한다.

*스크립트실행화면 , 스크립트작성화면

 

*** 참고사항

 

비교 연산자 목록

문자열 비교

문자열 = 문자열 : 같으면 참

문자열 != 문자열 : 같지 않으면 참

-z 문자열 : 문자열이 NULL(빈 문자열)이면 참

-n 문자열 : 문자열이 NULL이 아니면 참

 

산술 비교

수식1 -eq 수식2 : (equal) 두 수식(혹은 변수값)이 같으면 참

수식1 -ne 수식2 : (not equal) 두 수식(혹은 변수값)이 다르면 참

수식1 -gt 수식2 : (greater than) 수식1이 더 크면 참 ( 부등호 > 의미)

수식1 -ge 수식2 : (greater equal) 수식1이 크거나 같으면 참

수식1 -lt 수식2 : (less than) 수식1이 작으면 참 (부등호 < 의미)

수식1 -le 수식2 : (less equal ) 수식1이 작거나 같으면 참

!수식 : 수식이 거짓이면 참

 

AND, OR 관계 연산자

AND 조건 : && 으로 두 조건을 연결

OR 조건 : || 으로 두 조건을 연결

각각의 개별 조건은 [  ] (대괄호) 안에 정의 되어야함에 유의.

 

 

 

 

*** case - esac 문법   (여러조건으로 나눠서 처리할 수 있다)

C의 switch case 문과 비슷

기본 문법은

 

case 조건변수값 in

    조건값)

        실행문;;              <-- 실행문 뒤에 세미콜론 두개 필수

    조건값)

        실행문;;

    조건값)

        실행문;;

    *)                          <-- 위의 조건이 다 아닐경우

        실행문;;               

esac      <-- 끝냄

* 스크립트 실행화면 ,  스크립트 작성화면

 

 

 

 

 

 

댓글