꿀팁/소소한 팁

쉘 스크립트(bash shell script) 기본 문법 정리

2023. 6. 13. 22:02
728x90
반응형

쉘 스크립트(shell script)란?

쉘 스크립트는 리눅스(linux)혹은 유닉스(unix) 기반의 운영체제에서 사용되는 스크립트 언입니다. 여기서 스크립트는 명령어, 프로그래밍 구조를 사용하여 시스템 작업을 자동화 하는데 사용됩니다. 예를 들어 main.py -> val.py -> test.py 순서대로 작동시켜야할 때, 쉘 스크립트에 미리 작성한 뒤에 그 쉘 스크립트를 실행하면 명령어 한줄에 저 세 개의 파일을 모두 실행시킬 수 있습니다. 

쉘 스크립트 미사용 쉘 스크립트 사용
main.py, val.py, test.py 3번 실행 start.sh 1번 실행

쉘 스크립트는 반복문, 조건문, 함수 등과 같은 프로그래밍 요소들을 포함하기 때문에, 파이썬 코딩하듯이 쉽게 작성할 수 있습니다. 

 

이제부터는 쉘 스크립트를 어떻게 정의하는지 알아보도록 하겠습니다. 

 

쉘 스크립트 파일 만들기

쉘 스크립트파일은 .sh 확장자를 사용하고, 파일의 첫 줄에 특정 코드를 작성해야합니다. 

예를 들어 start.sh라는 파일을 만들었다고 가정합시다. 이 파일의 제일 상단에는 아래와 같은 코드를 작성해주셔야합니다. 

#!/bin/bash

"나 쉘스크립트 파일임"이라고 명시해준다 생각하시면 됩니다. 

 

쉘 스크립트 문법

1. 주석

쉘 스크립트의 주석은 파이썬과 같습니다 #으로 표기해주시면 됩니다. 

#나는야 주석

 

2. 변수

쉘 스크립트에서도 변수 선언을 해줄 수 있는데요. 따로 자료형을 선언해주지 않으셔도 됩니다. 

여기서 중요한 포인트가 있습니다. 

- 변수 선언시 등호를 이용하고, 변수 이름과 값 사이에 공백을 넣으면 안됩니다. 

생각보다 쉘 스크립트는 공백에 예민하니 주의해주세요. 

#올바른 선언방법
name="ComGongNuNa"
age=29

#틀린 선언 방법
name = "ComGongNuNa"
age = 29

 

위에서 변수를 선언했으니 받아와야겠죠?

변수는 $기호를 사용하여 받아옵니다. 

echo $name
echo $age

여기서 echo는 python의 print와 같은 역할을 합니다. 

 

출력 결과는 다음과 같습니다. 

쉘스크립트사용법

 

3. 조건문

조건문은 기존과 동일하게 if, elif, else를 이용합니다. 

단, 여기서는 조금 다른 부분이 있습니다. 

if, elif 뒤에는 then을 적어줘야하며, 조건문이 끝나는 부분에 fi를 적어줘야합니다. 

여기서 주의사항! 

앞에서도 말씀드렸듯이 쉘 스크립트는 공백에 굉장히 예민합니다. 따라서 [ $name == "ComGongNuNa" ]괄호와 인자들 사이에 공백을 반드시 넣어주셔야합니다. 

올바른 경우 틀린 경우
[ $name == "ComGongNuNa" ] [$name == "ComGongNuNa"]
## 방법1
if [ $name == "ComGongNuNa" ]; then
  echo "ComGongNuNa!!!"
elif [ $name == "ComGong" ]; then
  echo "ComGong!!!"
else
  echo "No!!!"
fi


## 방법2
if [ $name == "ComGongNuNa" ]
then
  echo "ComGongNuNa!!!"
elif [ $name == "ComGong" ]
then
  echo "ComGong!!!"
else
  echo "No!!!"
fi

출력 결과는 다음과 같습니다. 

쉘스크립트사용법

 

4. 반복문

반복문도 for, in으로 사용가능합니다. 

여기서도 조금 다른점이 있는데요. 

for문을 돌기전 do 로시작을 알려야하며, 끝날 경우 done으로 명시해줘야 합니다. 

##리스트 이용하기
char_list="A B C D E"
for i in $char_list 
do
  echo $i
done


##배열 이용하기
num_array=(1 2 3 4)
for i in "${num_array[@]}"
do 
  echo $i
done


##range(1,10)해보기
for i in {1..10}
do 
  echo $i
done


##range(10,1)해보기
for i in {10..1}
do 
  echo $i
done


##range(10,1,2)해보기
## 10에서 1방향으로 2칸씩 가기
for i in {10..1..2}
do 
  echo $i
done
  • 리스트
    • 리스트의 경우 공백을 기준으로 써줍니다. 
  • 배열
    • 배열은 ()로 감싸주며, 콤마 없이 공백으로 구분합니다. 문자열, 숫자 모두 가능합니다. 
  • 증가, 감소
    • 파이썬에서의 range는 {}으로 표현하며 ..으로 구분합니다.
    • range(1,10)은 {1..10}
    • range(1,10,2)는 {1..10..2}

여기서 또 다른 반복문인 while은 아래와 같이 사용합니다. 

선언은 위와 동일하게 해주면됩니다. 

while [ $age -gt 0 ]
do
    echo $age
    age=$(($age - 1))
done

여기서 새로운 연산자 두가지가 등장합니다!

  • while문 내의 수치 비교
데이터 타입 연산자 설명



산술 비교 연산





A -eq B A,B가 같을 경우 참
A -ne B A, B가 같지 않을 경우 참
A -gt B A가 B보다 클 경우 참
A -ge B A가 B보다 크거나 같은 경우 참
A -lt B A가 B보다 작을 경우 참
A -le B A가 B보다 작거나 같은 경우 참
A < B A가 B보다 작을 경우 참(이중 소괄호에서만 사용 가능 (()) ) 
A <= B A가 B보다 작거나 같을 경우 참(이중 소괄호에서만 사용 가능 (()) ) 
A > B A가 B보다 클 경우 참(이중 소괄호에서만 사용 가능 (()) ) 
A >= B A가 B보다 크거나 같을 경우 참(이중 소괄호에서만 사용 가능 (()) ) 



문자열 비교 연산



A = B A와 B가 같을 경우 참
A == B A와 B가 같을 경우 참
A != B A와 B가 같지 않을 경우 참
A < B A가 B보다 먼저오지 않을 경우 참 
A > B A가 B보다 먼저 올 경우 참
A -z A가 null일 경우 또는 길이가 0이면 참
A -n A가 null이 아닐 경우 참
논리 연산

A -a B A and B
A -o B A or B
  • 사칙연산
사용법 1 result=$(($a 연산자 $b))
사용법 2 result=$(expr $a 연산자 $b) 
사용법 3 result=`expr $a 연산자 $b`

연산자에는 +, -, /가 공통적으로 들어가며 expr곱셈에는 \*로 적어주시고, 일반 곱셈에는 *로 사용하시면 됩니다. 

 

5. 함수

함수도 파이썬과 굉장히 비슷한데요. 파이썬에서는 def로 선언해주지만, bash에서는 function 으로 선언해줍니다.

function test(){
	echo "test"
}

함수 호출시에는 아래와 같이 사용합니다. 

test

 

함수에 인자를 줄 경우 호출 부분에서는 따로 명시해주지 않습니다. 

예를 들어 아래와 같이 출력하는 함수가 있다고 가정합시다. 

function test(){
	echo $1
      echo $2
}

여기서 $1, $2는 각각 첫번째, 두번째 인자입니다. 

 

아래와 같이 호출해 주면 함수의 인자가 들어가서 각각 1, 2가 출력됩니다. 

test 1 2

공백 기준으로 인자를 넣어주시면 됩니다. 

 

 

오늘은 쉘 스크립트의 기본 문법에 대해서 알아보았습니다!

도움이 되셨으면 좋겠네요:)

반응형

'꿀팁 > 소소한 팁' 카테고리의 다른 글

깃허브 터미널 사용자 정보 등록하는 방법  (0) 2025.03.03
깃허브 블로그 만드는 방법 및 테마 설정  (0) 2025.03.03
bardapi를 사용해보자  (0) 2023.06.10
ray를 사용해보자  (0) 2023.06.08
ChatGPT API를 사용해보자  (0) 2023.06.07
'꿀팁/소소한 팁' 카테고리의 다른 글
  • 깃허브 터미널 사용자 정보 등록하는 방법
  • 깃허브 블로그 만드는 방법 및 테마 설정
  • bardapi를 사용해보자
  • ray를 사용해보자
컴공누나
컴공누나
ML 엔지니어 컴공누나입니다:) wodbs9522@gmail.com
컴공누나의 지식 보관소ML 엔지니어 컴공누나입니다:) wodbs9522@gmail.com
컴공누나
컴공누나의 지식 보관소
컴공누나
전체
오늘
어제
  • 분류 전체보기 (267)
    • 컴공누나 소개 (2)
    • 언어 마스터 (4)
      • 파이썬 (4)
    • 알고리즘 (159)
      • 프로그래머스 (120)
      • 백준알고리즘 (39)
      • 알고리즘기초 (0)
    • 인공지능공부 (62)
      • 인공지능기본지식 (6)
      • LLM (3)
      • 인공지능기초수학 (9)
      • 프레임워크 (2)
      • 자연어처리 (16)
      • 컴퓨터비전 (2)
      • 그래프 (24)
      • Prolog (0)
    • 다른 분야 (4)
      • Docker (1)
      • Web (3)
    • 논문 (10)
      • 논문리딩 (6)
      • 게제논문 (4)
    • 꿀팁 (19)
      • 오류 정리 (8)
      • 소소한 팁 (11)

블로그 메뉴

  • 홈
  • 태그
  • 글쓰기
  • 관리

공지사항

인기 글

태그

  • stanfordgnn
  • 프로그래머스
  • GNN
  • GPT
  • 자연어처리
  • selfattention
  • cs224w
  • 선형대수기초
  • Bert
  • 백준
  • 그래프강의
  • stanfordgraph
  • 영상기반상식추론
  • 스탠포드그래프
  • transformer
  • 그래프
  • 선형대수
  • 파이썬
  • 그래프신경망
  • nlp

최근 댓글

최근 글

글쓰기 / 관리자
hELLO · Designed By 정상우.
컴공누나
쉘 스크립트(bash shell script) 기본 문법 정리
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.