쉘 스크립트
쉘 스크립트(shell script)란?
쉘 스크립트를 실행하기 위해선 쉘에게 어떠한 명령을 할지 스크립트를 파일 형식 .sh
파일 확장자로 작성하여 알려주는 것
쉘 스크립트는 일반적인 프로그램 언어와 달리 기본 명령어를 기반으로 하여 몇 가지 문법을 가지고 사용자가 쉽게 작성할 수 있다.
쉘 스크립트의 장점 및 활용
- 반복되는 작업을 자동화하기 위해 스크립트 파일 형태 작성
- 다른 프로그래밍 언어의 코드로 쓰인 것보다 훨씬 더 빠른 경우가 많다.
- 컴파일 단계가 없기 때문에 스크립트는 디버깅을 하는 동안 빠르게 실행할 수 있다.
- 스크립트의 내용을 모르는 사용자도 실행할 수 있도록 할 수 있다.
- 모니터링, 데이터 백업, 복구, 보안, 인증 등 여러 상황에서 많이 활용된다.
쉘 스크립트 실행 총정리
- 쉘 스크립트는 명령어를 기반으로 하며
.sh
라는 확장자로 지정해주어야 한다. - 쉘 스크립트를 응용하여 활용하면 작업을 자동화하기 편리하다.
- 쉘 스크립트의 첫 번째는 실행파일을 만들어야 한다.
- 실행 파일을 만들기 위해서는 x 권한이 필요하다. (chmod 명령어 참고)
- 쉘 스크립트 파일 첫 번째 줄에는 어떠한 쉘을 사용할지 선언 해야 한다.
#!/bin/bash
:#!
: 스크립트를 실행할 쉘을 지정하는 선언문/bin/bash
: bash 명령의 절대 경로- 즉, /bin/bash의 쉘로 스크립트를 작성하겠다는 선언
- 쉘 스크립트 실행 방법에는 여러가지가 있지만, 디렉토리 경로를 우선적으로 알고 있어야 한다.
변수
쉘 스크립트에서 변수란?
- 정해지지 않은 값을 저장하는 공간으로 지정된 영역 안에서 한번 사용되는 것이 아니라 프로그램이 실행되는 동안 계속해서 사용될 수 있다.
- 변수 할당은 정해지지 않은 값을 데이터 저장소에 담는 것을 의미한다.
- 변수 치환은 저장소에 담겨있는 변수를 불러 출력하는 것을 의미한다.
변수 사용 시 주의사항
- 변수 할당 시 다른 컴퓨터 언어와 마찬가지로
=
기호를 이용해 변수를 선언한다.- 이 때 주의할 점은 앞뒤로 공백이 없어야 한다는 것이다.
- 공백 생성 시 실행 단계에서 오류가 발생할 수 있다.
- 변수를 선언할 시 변수 이름은 대문자로 통일하는 것이 좋다.
- 쉘에서는 대문자와 소문자를 구별하여 다른 문자로 인식하기 때문에 변수의 이름을 착각하여 호출 및 치환할 시 오류가 생길 수 있다.
- 따라서 변수 이름을 대문자로 통일해야 코드의 오류를 피할 수 있다.
- 쉘 스크립트를 작성할 때 변수들의 위치는 최상단에 위치하는 것이 좋다.
- 쉘 스크립트를 작성할 때 같은 내용 및 비슷한 내용의 변수를 여러 번 선언하지 않는다.
변수 할당
변수를 할당하려면 변수 이름과 값을 할당 연산자 =
를 사용한다.
변수 이름은 문자, 숫자 및 언더스코어(_
)로 구성되며, 숫자로 시작할 수 없다.
변수 이름은 대소문자를 구분한다.
NAME=devops
변수 참조
변수 값을 사용하려면 변수 이름을 $
기호와 함께 사용하여 참조한다.
echo $NAME
명령어 결과를 변수에 할당
명령어를 실행하고 그 결과를 변수에 할당할 수 있다.
이를 위해 백틱(```) 또는 $()
를 사용하여 명령어를 감싸 변수에 할당한다.
NAME=`command`
NAME=$(command)
환경 변수
환경 변수는 시스템 전체에서 사용되는 변수이다.
이러한 변수는 스크립트에서 사용할 수 있고 일반적으로 대문자로 작성된다.
시스템에서 미리 정의된 많은 환경 변수가 있다.
echo $HOME
매개 변수
매개 변수는 스크립트에 전달된 인수이다. 매개 변수는 스크립트 내에서 $1
, $2
, $3
등의 특수 변수를 통해 참조된다.
script.sh f1 f2 f3
#script.sh
echo $1
echo $2
echo $3
위 스크립트를 실행하면,
f1
f2
f3
결과가 출력된다.
배열
배열은 여러 값을 저장하는 데 사용된다. 배열을 선언하려면 배열 이름과 대괄호를 사용한다.
ARRAY_NAME=(value1 value2 value3)
배열의 값을 참조하려면 인덱스를 사용한다.
echo ${ARRAY_NAME[0]}
echo ${ARRAY_NAME[1]}
echo ${ARRAY_NAME[2]}
반복문
반복문은 쉘 스크립트에서 자주 사용되며, 특정 작업을 여러 번 반복하여 실행할 수 있도록 해준다.
쉘 스크립트에서는 for, while, until 반복문을 사용할 수 있다.
for 반복문
for 반복문은 변수를 사용하여 일련의 작업을 반복적으로 수행하는 데 사용된다.
변수의 값을 순차적으로 증가시키며 반복문을 실행하며 반복문의 문법은 다음과 같다.
for i in 1 2 3 4 5
do
echo "Looping ... number $i"
done
- i : 변수
- do : 반복하며 수행할 내용
- done : 반복문 종료
while 반복문
while 반복문은 조건이 참일 때 반복하여 수행하는 반복문이다.
조건이 참일 경우 계속해서 반복하고, 거짓일 경우 반복을 멈춘다.
while [ 조건문 ]
do
command1
command2
...
done
조건문
쉘 스크립트에서 조건문은 특정 조건이 참이면 명령어를 실행하고, 거짓이면 실행되지 않도록 제어한다. 쉘 스크립트에서는 if, elif, else 구문을 사용하여 조건문을 작성할 수 있다.
if 구문
if 구문은 조건문을 작성할 때 가장 기본적으로 사용되는 구문이다.
if [ 조건문 ]
then
# 조건문이 참일 경우 실행할 코드
fi
조건문이 참일 경우, then 아래에 있는 명령어를 실행한다.
fi는 if 구문의 끝을 의미한다.
if-else 구문
if-else 구문은 조건문이 참일 경우와 거짓일 경우에 각각 다른 명령어를 실행할 때 사용된다.
if [ 조건문 ]
then
# 조건문이 참일 경우 실행할 코드
else
# 조건문이 거짓일 경우 실행할 코드
fi
조건문이 참일 경우 then 아래에 있는 명령어를 실행하고, 거짓일 경우 else 아래에 있는 명령어를 실행한다.
if-elif-else 구문
if-elif-else 구문은 여러 조건을 체크하면서 다른 명령어를 실행할 때 사용된다.
if [ 조건문1 ]
then
# 조건문1이 참일 경우 실행할 코드
elif [ 조건문2 ]
then
# 조건문1이 거짓이지만, 조건문2가 참일 경우 실행할 코드
else
# 모든 조건문이 거짓일 경우 실행할 코드
fi
조건문1이 참일 경우 then 아래에 있는 명령어를 실행한다.
조건문1이 거짓이고 조건문2가 참일 경우 elif 아래에 있는 명령어를 실행한다.
모든 조건이 거짓일 경우 else 아래에 있는 명령어를 실행한다.
조건 연산자
쉘 스크립트에서는 조건문에서 사용되는 다양한 연산자를 제공한다.
대표적인 조건 연산자
=
: 문자열이 같은지 비교한다.-eq
: 두 개의 정수가 같은지 비교한다.-ne
: 두 개의 정수가 다른지 비교한다.-gt
: 첫 번째 정수가 두 번째 정수보다 큰지 비교한다.-**lt**
: 첫 번째 정수가 두 번째 정수보다 작은지 비교한다.-**ge**
: 첫 번째 정수가 두 번째 정수보다 크거나 같은지 비교한다.-**le**
: 첫 번째 정수가 두 번째 정수보다 작거나 같은지 비교한다.!=
: 문자열이 다른지 비교한다.-**z**
: 문자열의 길이가 0인지 확인한다.
위와 같은 조건 연산자를 사용하여 if, elif, else 구문에서 조건문을 작성할 수 있다.
'TIL' 카테고리의 다른 글
TIL [웹서비스 개발 기초 - 클라이언트-서버 아키텍처] #23.03.15 (0) | 2023.03.15 |
---|---|
TIL [리눅스 운영체제 - 시스템 모니터링] #23.03.14 (0) | 2023.03.14 |
TIL [리눅스 운영체제 - 프로세스와 서비스 관리] #23.03.13 (0) | 2023.03.13 |
TIL [리눅스 운영체제 - 관리자로서의 리눅스] #23.03.10 (0) | 2023.03.10 |
TIL [리눅스 운영체제 - 출력 관련 명령어] #23.03.10 (0) | 2023.03.10 |