01. shell script 시작하기

김명래·2023년 3월 1일
0

갑자기 회사분들에게 shell script 에 대하여 교육을 진행하기로 했다.

아무튼 ... 거두절미하고 시작해보자 먼저 aws에서 인스턴스 하나 파고 접속해서
test.sh 파일을 생성해보자

첫번째 행은 반드시

#! bin/bash 

라고 입력한다. 이행은 스크립트를 실행하는 인터프리터를 알려주는 행이다.

자바와도 같이 실행될때 한행한행을 기계어로 변환하나보다


echo "hello bash !"

(test할 shell script의 전문)

자 이후 이것을 실행하기위해서는 권한을 변경해주어야한다.
chmod로 권한을 변경할것이다.

chmod 755 test.sh

이후 파일을 절대경로나 상대경로를 이용해서 실행할 수 있다.

./test.sh 

자 여기까지 기초적인 shell script에 시작을 경험할 수 있었다.

이건 내 개인공부가 아니라 교육 목적이기 때문에 용어정리와 요약을 하자면

shell script는 interpreter 언어이다.

interpreter 란 ?

컴파일이라는 개념은 컴파일러가 파일에 있는 모든 내용들을 기계어로 변환하는 과정이라면 인터프리터는 파일을 실행시에 한줄한줄 변환하며 실행하는 특징이 있다. 따라서 인터프리터 언어는 컴파일언어보다 실행속도가 느릴 수 있다.

기계어란 ?

기계어란 컴퓨터가 이해할 수 있는 언어이다.


다음은 변수에대해 알아볼것이고 변수에 대해 알아보기전에 먼저 메모리에대해 알아보고 가자

stack

스택 메모리는 함수의 "호출"과 동시에 할당되며 그와 관계되는 지역변수와 매개변수가 저장되는 공간이며 함수가 종료될때 소멸한다.

heap

runtime 중에 할당되는 공간이다. 이 영역에 할당되는 메모리는 동적이며 사용자가 할당할 수 있다.

static

프로그램의 시작부터 종료까지 사용하게되는 메모리 영역이다

우리는 주로 stack 영역을 다룰것이다.


이제 변수에 대해 알아보자.

변수를 선언하는 즉시 stack 메모리 영역에 공간이 할당되고 할당된 공간만큼 데이터를 집어넣을 수 있다.

shell script에서 변수의 크기는 따로 정의되어 있는것이 아니라고 한다. 하지만 너무 큰 데이터는 임시파일을 이용해서 따로 저장해야한다고 한다.

변수를 선언할때 주의해야할 점은 예약변수와 이름이 겹치지 않아야하고 가독성을 위해 이름을 잘 선정하는게 좋다.

먼저 전역변수부터 선언해보자.

#! /bin/bash

str="hello bash!"

echo ${str}
~

전역변수로 선언된 hello bash 를 출력하고 종료한다.

변수를 사용할때는 $를 사용하고 문자열은 ""로 저장한다.

이제 지역변수에 대해 알아보자.

"test.sh" 10L, 102C                                                                                                                                                     6,1          모두
#! /bin/bash

str="all variable"

str_test(){
        local str="local"
        echo ${str}
}
echo ${str}
str_test

먼저 전역변수로 static영역에 str 변수가 선언되었고 이는 어디서나 사용가능함을 내포하고 있다 그 이후 함수를 선언문이 있고 이후에 함수를 실행하는걸 볼 수 있다.

profile
독자보다 필자를 위해 포스팅합니다

0개의 댓글