리눅스 쉘 스크립트 예제


리눅스 쉘 스크립트 예제
리눅스에서 가장 많이 사용하는 bash 쉘 스크립트 만들기 방법에 대해서 설명드립니다. bash 쉘의 특징과, 조건문, 반복문 등의 문법을 사용하여 쉘 스크립트 예제를 작성하는 방법에 대해서 설명드립니다.

리눅스 쉘 스크립트 예제

배시 쉘(Bash Shell)의 특징

배시(Bash, Bourne-again shell, 본 어게인 셸)은 Bourne Shell(sh)을 대체하는 유닉스 쉘로 리눅스에서 가장 많이 사용되는 쉘 입니다. 이글 에서는 배시 쉘인 bash에서 쉘 스크립트를 작성하는 방법에 대해서 설명드리도록 하겠습니다.

쉘 스크립트는 여러 종류의 텍스트 편집기를 이요하여 개발 할 수 있습니다. 편집기 중에서 vi 사용법과 관련해서는 아래의 글을 참고해 주시기 바랍니다.

vi 편집기 사용법

쉘 스크립트가 필요한 이유

프로그래밍 언어 또는 스크립트 언어로 특정한 작업을 수행하는 프로그램과 스크립트 등을 개발 할 수 있습니다. 하지만 프로그래밍 언어 또는 기존 Python 등의 스크립트로는 명령어등을 처리하기에는 많은 코드가 필요할 수 있습니다.

리눅스에는 다양한 명령어 들이 지원됩니다. 이러한 명령어들을 조합하여 쉘 스크립트를 개발 할 수 있다면 특정한 작업을 수행하는 기능을 개발하는데 보다 빠르게 개발이 가능합니다.

리눅스 쉘 스크립트 예제

기존의 배시 쉘에서 사용되는 명령어 등은 쉘 스크립트 내부에서 그대로 사용이 가능합니다. 쉘 스크립트 파일을 작성할 때에 제일 처음 #!/bin/bash 구문을 추가하여 내용을 작성하면 됩니다. 아래의 내용은 문자열을 출력하는 내용입니다.

#!/bin/bash

echo "hello world"

생성된 쉘 스크립트 실행은 아래와 같이 실행권한을 추가한 뒤에 바로 실행할 수 있습니다.

$ chmod +x test.sh
$ ./test.sh

그리고 다음과 같이 bash 명령어로 쉘 스크립트를 지정하면서 실행 할 수도 있습니다.

$ bash test.sh

쉘 스크립트 변수(Variable)

변수는 크게 지역변수, 환경변수, 예약변수들이 존재합니다. 변수 생성은 변수명에 대입연산자(=)를 사용하여 값을 대입하면 변수가 생성되면서 값이 초기화 됩니다.

  • 지역변수 : 함수 내에서만 사용 가능한 변수. 함수 내에서 변수 생성시 local 지시어 사용 가능합니다.
  • 전역변수 : 실행되고 있는 스크립트 내에서 사용할 수 있는 변수입니다.
  • 환경변수 : export 를 지정하여 사용가능합니다.
  • 예약변수 : 예약된 변수, 시스템과 관련하여 사용됩니다.

아래의 예제는 변수를 생성하고, 참조하는 방법을 나타냅니다.

#!/bin/bash

hello="hello"
world="world"

echo $hello
echo ${hello}

echo $hello", "$world
echo ${hello}", "${world}

쉘 스크립트 조건문

bash 쉘에서 사용되는 조건문은 아래와 같은 문법을 갖습니다.

if [ 값1 조건식 값2 ];then
   수행문
fi

아래는 조건문의 간단한 사용 예제를 나타냅니다.

#!/bin/bash

val="hello"

if [ $val == "hello" ];then
  echo "hello"
fi

조건이 많아 질 경우 아래와 같이 if ~ elif ~ else ~ fi 구문을 사용할 수도 있습니다.

#!/bin/bash

val="hello"

if [ $val == "hello" ];then
  echo "hello"
elif [ $val == "hi" ]; then
  echo "hi"
else
  echo "else"
fi

쉘 스크립트 반복문

쉘 스크립트에서 반복문은 문법은 아래와 같습니다.

for (( EXP1; EXP2; EXP3 ))
do
    command1
    command2
    command3
done

기존의 프로그래밍 문법에서와 비슷하게 사용하실 수 있습니다. for 문 사용 예제는 아래와 같습니다.

#!/bin/bash

for (( c=1; c<=5; c++ ))
do
  echo "value : $c"
done

다음과 같이 for ~ in 문법을 사용하여 사용할 수도 있습니다.

#!/bin/bash

for val in {1..5}
do
  echo ${val}
done

쉘 스크립트 함수 정의

쉘 스크립트에서 함수는 아래와 같이 정의하여, 함수 이름을 이용하여 호출 할 수 있습니다.

#!/bin/bash

test_func() {
  echo "hello, world"
}

test_func

함수를 호출 할때 파라미터를 지정하여 호출 할 수 있는데, 파라미터를 지정하여 호출하는 방법은 아래와 같습니다.

#!/bin/bash

test_func() {
  echo "hello, world"
  echo $1
}

test_func "test"

전달된 파라미터를 포함하여, 함수 내부에서 사용될 수 있는 추가 주요 변수는 아래와 같습니다.

  • $0 : 실행된 스크립트 이름
  • $N : $1, $2 등 전달된 파라미터의 변수
  • $# : 매게변수의 총 개수

( 본문 인용시 출처를 밝혀 주시면 감사하겠습니다.)