Study/Linux

[Script] Shell Script 작성을 위한 기초 문법

Dream Amal 2024. 5. 3.

1. Shell 이란?

01. Shell 

Shell은 운영 체제와 사용자 사이의 인터페이스로, 사용자가 운영 체제의 기능을 조작하고 제어할 수 있게 해줍니다.

주로 명령어를 입력하여 운영 체제에 명령을 내리는 환경을 제공합니다.

02. Shell 변수

Shell 변수는 데이터를 저장하고 참조하는 데 사용됩니다.

변수를 선언하고 값을 할당하여 나중에 해당 값을 사용할 수 있습니다.

name="John"
echo $name

03. Shell 환경 변수

환경 변수는 모든 쉘 세션에서 사용되는 변수입니다.

주로 시스템의 동작 방식을 제어하거나 사용자의 선호도를 저장하는 데 사용됩니다.

export PATH=$PATH:/usr/local/bin

04. Nesting Command

명령어를 중첩하여 실행할 수 있습니다.

이를 통해 한 명령어의 출력을 다른 명령어의 입력으로 사용할 수 있습니다.

cat $(ls *.txt)

05. Alias

Alias는 명령어나 명령어의 옵션을 간략하게 지정하여 사용할 수 있도록 해줍니다.

alias ll='ls -alF'

06. Prompt

프롬프트는 사용자에게 명령을 입력하도록 하는 텍스트입니다.

사용자에게 명령을 입력할 준비가 되었음을 나타냅니다.

PS1="[\u@\h \W]\$ "

07. Shell의 Redirection

Redirection은 명령어의 입출력 방향을 제어합니다.

파일에서 입력을 읽거나 출력을 파일로 보낼 수 있습니다.

ls > file_list.txt

2. Shell Programming

01. Shell Script란?

Shell Script는 Shell 명령어와 제어 구조를 사용하여 작성된 스크립트 파일입니다. \

운영 체제의 자동화나 작업 자동화에 사용됩니다.

02. 간단한 Script 사용해보기

간단한 스크립트를 사용하여 "Hello, World!"를 출력하는 예제입니다.

#!/bin/bash
echo "Hello, World!"

03. 위치매개변수

스크립트에 전달된 인수를 사용하여 동적인 작업을 수행할 수 있습니다.

#!/bin/bash
echo "Hello, $1!"

04. Wildcard

와일드카드는 파일 이름 패턴에 일치하는 파일을 선택하는 데 사용됩니다.

주로 '*'와 '?'를 사용합니다.

ls *.txt

05. 산술 연산자

산술 연산을 수행하는 데 사용됩니다.

expr은 산술 표현식을 평가하고,

let은 변수에 대한 산술 연산을 수행하며,

bc는 고급 수학 함수를 사용할 수 있는 계산기입니다.

result=$(expr $num1 + $num2)
result=$(($num1 + $num2))
result=$(echo "$num1 + $num2" | bc)

3. 제어문

01. if 문

조건문을 사용하여 실행 흐름을 제어합니다.

조건이 참이면 실행되는 명령어 블록입니다.

if [ $age -ge 18 ]
then
  echo "You are an adult."
else
  echo "You are a minor."
fi

02. case 문

여러 조건을 비교하고 실행할 코드 블록을 선택하는 데 사용됩니다.

case $day in
  "Mon") echo "Monday";;
  "Tue") echo "Tuesday";;
  *) echo "Other day";;
esac

4. 반복문

01. for 문

주어진 목록의 각 항목에 대해 작업을 반복합니다.

for file in *.txt
do
  echo "Processing $file"
done

02. while / until 문

조건이 true일 때 루프를 반복합니다.

while은 조건이 true일 때 루프를 반복하고, until은 조건이 false일 때 루프를 반복합니다.

while [ $count -le 5 ]
do
  echo "Count is $count"
  ((count++))
done

 

while 루프 내에서 if 문을 사용하여 특정 조건을 확인하고 루프를 중단할 수 있습니다.

while [ $value -ne 10 ]
do
  if [ $value -gt 10 ]
  then
    break
  fi
  echo "Value is $value"
  ((value++))
done

5. 자주 사용되는 명령어

01. read

Read는 사용자로부터 입력을 읽는 데 사용됩니다.

스크립트 실행 중에 사용자로부터 데이터를 입력받을 수 있습니다.

echo "Enter your name:"
read name
echo "Hello, $name!"

02. sed

Sed는 텍스트 스트림 편집기로, 텍스트 변환 및 처리에 사용됩니다. 

파일에서 특정 패턴을 찾아 다른 패턴으로 대체할 수 있습니다.

sed 's/old_pattern/new_pattern/' file.txt

03. awk

Awk는 텍스트 파일을 처리하고 보고서를 생성하는데 사용되는 강력한 도구입니다.

각 줄을 필드로 나누고, 각 필드를 처리할 수 있습니다.

awk '{print $1, $2}' file.txt

04. grep

Grep은 파일에서 패턴을 검색하는 데 사용됩니다.

특정 패턴과 일치하는 모든 줄을 출력할 수 있습니다.

grep "pattern" file.txt

05. pipeline

파이프라인은 한 명령어의 출력을 다음 명령어의 입력으로 사용하는 것을 의미합니다.

이를 통해 복잡한 작업을 단일 명령줄로 수행할 수 있습니다.

cat file.txt | grep "pattern" | sed 's/old_pattern/new_pattern/' | awk '{print $1, $2}'

6. 예제 프로그래밍

01. 특정 파일에서 패턴을 찾아 치환하기

#!/bin/bash

echo "Enter the pattern to search:"
read pattern

echo "Enter the new pattern to replace:"
read new_pattern

echo "Enter the file name:"
read filename

grep "$pattern" $filename | sed "s/$pattern/$new_pattern/g"

이 스크립트는 사용자로부터 파일 이름, 검색할 패턴, 대체할 패턴을 입력받고,

그에 맞는 처리를 수행하여 결과를 출력합니다.

02. 디렉토리 내 특정 확장자 파일 수 세기

#!/bin/bash

echo "Enter the directory path:"
read directory

echo "Enter the file extension to count:"
read extension

count=0

for file in $directory/*.$extension
do
  if [ -f $file ]; then
    ((count++))
  fi
done

echo "Number of .$extension files in $directory: $count"

이 스크립트는 사용자로부터 디렉토리 경로와 파일 확장자를 입력받아

해당 디렉토리 내에 특정 확장자 파일의 수를 세는 예제입니다.

반복문을 사용하여 디렉토리 내의 모든 파일을 확인하고, 조건문을 사용하여 파일인지 확인합니다.

03. 입력된 숫자의 합 구하기

#!/bin/bash

sum=0

echo "Enter numbers to sum (press q to quit):"
while true
do
  read num
  if [ "$num" == "q" ]; then
    break
  fi
  sum=$((sum + num))
done

echo "Sum of the numbers: $sum"

이 스크립트는 사용자로부터 숫자를 입력받아 합을 구하는 예제입니다.

무한 루프를 통해 숫자를 입력받고, 입력이 'q'일 때 루프를 종료합니다.

입력된 숫자를 누적하여 최종적으로 합을 출력합니다.

728x90

'Study > Linux' 카테고리의 다른 글

[NginX] NGINX 소스 컴파일로 설치하기  (0) 2024.05.27
[Script] 리눅스 사용자 추가 쉽게하자!  (0) 2024.04.30

댓글