Operating System

[Unix/Linux] Shell Script(쉘 스크립트)란

프로그래민 2020. 12. 23. 14:00
반응형

Shell(쉘)이란?

Shell(쉘)은 운영체제상에서 사용자가 입력하는 명령을 읽고 해석하여 대신 실행해주는 프로그램이다. 즉 다시말해서, 운영체제의 커널과 사용자 사이를 이어주는 역할을 하며 사용자의 명령어를 해석하고 운영체제가 알아들을 수 있도록 도와주는 명령어 해석기이다. Linux에서 사용하는 Shell의 종류로는 다음과 같은 것들이 있다.

  • bash : Bourne-Again Shell(프롬프트 : #, 경로 : /bin/bash). 가장 대표적으로 사용.
  • sh : Bourne Shell(프롬프트 : $, 경로 : /bin/sh)
  • csh : C Shell(프롬프트 : %, 경로 : /bin/csh)
  • ksh : Kron Shell(프롬프트 : $, 경로 : /bin/ksh)
  • tcsh : TENEX C Shell(프롬프트 : >, 경로 : /bin/tcsh)

 

Shell Script(쉘 스크립트)란?

Shell Script(쉘 스크립트)란 Shell(쉘)에서 사용할 수 있는 명령어들의 조합을 모아서 만든 배치(batch)파일이다.  즉, 운영체제의 Shell을 이용하여 한줄씩 순차적으로 읽으면서 명령어들을 실행시켜주는 인터프리터 방식의 프로그램이다. Shell Script를 활용하여 묶어진 명령어 조합을 수행하거나 반복적인 명령어를 단일 명령으로 쉽게 사용할 수 있다. 

 

Shell Script 기본 구조

Shell Script파일의 기본 구조는 다음과 같다.

1
2
#!/bin/bash
echo "Hello Linux!!"
                                                                                                                                           

CentOS 환경에서 vi 에디터를 이용하여 "Hello Linux!!"를 출력해주는 script.sh라는 Shell Script파일을 만들어주었다. 파일의 내용을 보면 첫번째 줄에 #!/bin/bash를 적어주었는데 이것은 Unix 계열 Shell Script 파일의 필수적인 구문이다. Sharp(#) + bang(!)의 합성어로 Shebang이라고 칭하는데, Script파일의 최상단에 해당 파일을 해석해줄 인터프리터의 절대경로를 지정해주는 것이다. 위의 예시는 bash를 Shell의 인터프리터로 지정한 것이다.

Shell Script 파일을 실행 시키기 위해서는 파일을 vi 에디터로 작성한후 실행권한을 부여해야한다. 따라서 아래와 같은 chmod 755 명령어로 실행 권한을 부여한 후, ./[Shell Script 파일명] 명령어를 이용하여 script.sh 파일을 실행시켰다. 그 결과 script.sh에 작성한 echo 명령어가 실행이 되었고 "Hello Linux!!"라는 결과를 확인 할 수 있었다.

 

Shell Script 기본 문법

출력

1
2
echo "Echo command"            #자동개행
printf "printf command\n"    #\n을 이용한 
                                                                                                         

변수

1
2
3
4
5
6
7
8
9
10
11
#변수 선언, 대소문자 구분 및 =사이에 공백 X
num=100
str="hello"
 
# $을 이용한 변수 호출
echo "$num"
echo "$str"
 
#또는
echo "${num}"
echo "${str}"
                                                                                                     

배열

1
2
3
4
5
6
7
8
#배열선언
arr=("ab" "de" "ef")
 
echo "${arr[0]}"    #인덱스를 사용
echo "${arr[@]}"    #전체 원소를 의미
 
#원소추가
arr+=("gh")
                                                                                                            

if문

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
num=5
 
#if[조건]; then ... elif[조건]; then ... else ... fi 문
if [ "${num}" -eq 2 ]; then
    echo "num is 2"
elif [ "${test_num}" -eq 3 ]; then
    echo "num is 3"
else
    echo "num is not 2 or 3"
fi
 
#if((산술연산)); then ... elif((산술연산)); then else ... fi문
if (( ${num} > 3 )); then
    echo "number is greater than 3"
else
    echo "number is not greater than 3"
fi
                                                                     

참고링크 : 비교연산자

반복문

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#while문
num=0
 
while (( "${num}" < 5 )); do
    echo "${num}"
    (( num = "${num}" + 1 )) 
done
 
#for문
arr=(1 2 3 4 5 6 7)
 
for i in ${arr[@]}; do
    echo "$i"
done
 
for (( i = 0; i < 10; i++)); do
    echo "$i"
done
 
                                                                                                                  

 

 

출처
ko.wikipedia.org/wiki/%EC%85%B8_%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8
twpower.github.io/131-simple-shell-script-syntax
blogger.pe.kr/320
blog.naver.com/kgw1988/221123253475
반응형

'Operating System' 카테고리의 다른 글

[OS] 커널(Kernel)이란  (1) 2021.12.15