리눅스 쉘 스크립트 예제
리눅스에서 가장 많이 사용하는 bash 쉘 스크립트 만들기 방법에 대해서 설명드립니다. bash 쉘의 특징과, 조건문, 반복문 등의 문법을 사용하여 쉘 스크립트 예제를 작성하는 방법에 대해서 설명드립니다.
배시 쉘(Bash Shell)의 특징
배시(Bash, Bourne-again shell, 본 어게인 셸)은 Bourne Shell(sh)을 대체하는 유닉스 쉘로 리눅스에서 가장 많이 사용되는 쉘 입니다. 이글 에서는 배시 쉘인 bash에서 쉘 스크립트를 작성하는 방법에 대해서 설명드리도록 하겠습니다.
쉘 스크립트는 여러 종류의 텍스트 편집기를 이요하여 개발 할 수 있습니다. 편집기 중에서 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 등 전달된 파라미터의 변수
- $# : 매게변수의 총 개수
( 본문 인용시 출처를 밝혀 주시면 감사하겠습니다.)