Linux 프로그래밍 학습에 도움이 되는 5가지 Bash 스크립트 예제

Bash 스크립팅은 리눅스 환경에서 컴퓨터를 제어하는 가장 일반적이고 접근성이 뛰어난 방법 중 하나입니다. 아래 제시된 간단한 스크립트 예제들은 Bash 프로그래밍의 기초를 이해하고 숙달하는 데 큰 도움이 될 것입니다.

2. Bash에서 “Hello World” 출력하기

“Hello World” 예제는 모든 프로그래밍 언어를 처음 배울 때 가장 기본적인 단계이며, Bash도 예외는 아닙니다.

Bash를 사용하여 “Hello World”라는 문구를 출력하는 방법은 다음과 같습니다:

  • 텍스트 편집기를 실행하고, 다음의 코드 라인을 포함하는 새 파일을 만드십시오.
  • 모든 Bash 스크립트의 첫 번째 줄은 항상 아래와 같아야 합니다.
     #!/bin/bash 

    이 “#!/bin/bash” 명령은 쉘이 스크립트를 실행할 때 어떤 인터프리터를 사용할지를 정의하므로 매우 중요합니다. 여기서 Bash 인터프리터가 사용됩니다.

  • # 기호로 시작하는 모든 줄은 주석으로 처리됩니다. Shebang 라인은 특별한 경우에 해당하지만, 여러분은 자신의 주석을 활용하여 코드의 각 부분을 설명할 수 있습니다. 두 번째 줄에 주석을 추가해 보겠습니다. 예시는 아래와 같습니다:
      # This script prints "Hello World" 
  • echo 명령어는 뒤에 오는 값을 표준 출력으로 보냅니다. 세 번째 줄에 다음을 추가하세요:
     echo "Hello World" 
  • 스크립트 파일은 일반적으로 확장자 .sh를 사용합니다(예: hello_world.sh). 이는 필수는 아니지만, 스크립트 파일을 쉽게 식별하고 관리하는 데 도움이 됩니다.
  • 스크립트를 실행하려면, 먼저 파일에 실행 권한을 부여해야 합니다. chmod 명령을 사용하고, “+x” 플래그와 함께 스크립트 파일 이름을 인수로 전달합니다.
     chmod +x hello_world.sh 
  • 이제 해당 디렉토리 내에서 스크립트를 실행하려면 다음 명령을 입력하십시오:
     ./hello_world.sh 
  • 스크립트가 정상적으로 실행되면, 터미널에 “Hello World”라는 문구가 출력됩니다.

3. 사용자 입력을 받아 디렉토리 생성하기

일반적으로, 명령줄에서 실행 가능한 모든 프로그램을 스크립트에서도 실행할 수 있습니다. 예를 들어, mkdir 명령을 사용하여 스크립트 내에서 새로운 디렉토리를 생성할 수 있습니다.

  • 스크립트는 항상 shebang 라인으로 시작합니다.
     #!/bin/bash 
  • echo 명령을 사용하여 사용자에게 새로운 디렉토리 이름을 입력하라는 메시지를 표시합니다.
     echo "새로운 디렉토리 이름을 입력하세요:" 
  • 내장된 read 명령을 사용하여 사용자로부터 입력을 받습니다. 이 명령의 인수는 쉘이 입력을 저장할 변수의 이름을 지정합니다.
     read newdir 
  • 변수에 저장된 값을 사용하려면, 변수 이름 앞에 달러 기호($)를 붙여야 합니다. 입력받은 변수의 내용을 mkdir 명령에 인수로 전달하여 새로운 디렉토리를 만들 수 있습니다.
     mkdir $newdir 
  • 스크립트를 실행하면 이름을 입력하라는 메시지가 표시됩니다. 유효한 디렉토리 이름을 입력하면, 스크립트가 현재 디렉토리 내에 해당 이름의 디렉토리를 생성합니다.

4. 명령줄 인수를 사용하여 디렉토리 생성하기

대화형으로 입력을 받는 대신, 대부분의 리눅스 명령어들은 인수를 지원합니다. 프로그램을 실행할 때 인수를 제공하여 프로그램의 작동 방식을 제어할 수 있습니다.

스크립트 내에서는 $1을 사용하여 첫 번째 인수의 값을 참조할 수 있는 특수한 변수가 있습니다. $2는 두 번째 인수를 참조하는 방식입니다.

  • 이전 예제에서 사용했던 mkdir 명령을 사용하여 디렉토리를 생성합니다. 하지만 이번에는 내장 변수 $1을 사용합니다.
     #!/bin/bash
    mkdir $1
  • 이번에는 스크립트를 실행할 때, 새로 생성하고자 하는 디렉토리 이름을 인수로 전달합니다.
     ./arg_dir.sh Test 
  • 만약 인수를 전혀 제공하지 않고 스크립트를 실행하면 어떻게 될지 궁금할 것입니다. 한번 실행해보고 결과를 확인해 보세요. “usage: mkdir”로 시작하는 오류 메시지를 볼 수 있을 것입니다.

    명령줄 인수가 없을 경우, $1 값은 비어있게 됩니다. 스크립트가 mkdir을 호출할 때 인수가 전달되지 않아서 mkdir 명령은 해당 오류를 반환합니다. 이러한 문제를 방지하기 위해, 직접 상태를 확인하고 사용자에게 더 친절한 오류 메시지를 표시할 수 있습니다.

  • 언제나처럼 shebang 라인으로 시작합니다.
     #!/bin/bash 
  • mkdir 명령을 호출하기 전에, 첫 번째 인수가 비어있는지 확인합니다(즉, 인수가 없는지 확인). Bash의 if 문을 사용하여 조건에 따라 코드를 실행할 수 있습니다.
     if [ -z "$1" ]; then 
  • 첫 번째 인수가 비어 있다면, 오류 메시지를 출력하고 스크립트를 종료합니다.
         echo "첫 번째 인수로 디렉토리 이름을 제공해 주세요."
    exit
  • 약간 특이해 보이는 “fi” 키워드(“if”의 역순)는 Bash에서 if 문의 끝을 나타냅니다.
     fi 
  • 이제 인수가 있는 경우를 처리하기 위해 스크립트를 이전처럼 계속할 수 있습니다.
     mkdir "$1" 
  • 이제 인수를 포함하는 것을 잊어버리고 스크립트를 실행하면 친절한 메시지가 표시됩니다.

5. Bash 함수를 사용하여 파일 삭제하기

만약 동일한 코드를 여러 번 반복해서 사용한다면, 해당 코드를 함수로 묶어서 사용하는 것을 고려해 보세요. 이렇게 하면 필요할 때마다 함수를 호출할 수 있습니다.

다음은 특정 파일을 삭제하는 함수의 예시입니다.

  • Shebang 라인으로 시작합니다.
     #!/bin/bash 
  • 함수 이름 뒤에 빈 괄호와 중괄호 안에 명령을 입력하여 함수를 정의합니다.
     del_file() {
    echo "삭제 중: $1"
    rm "$1"
    }

    이제 함수를 호출하고 삭제할 파일 이름을 전달할 수 있습니다.

     del_file test.txt 

  • 함수를 호출하면 특수 변수 $?에는 실행한 마지막 명령의 종료 상태가 저장됩니다. 종료 상태는 오류를 확인하는 데 유용합니다. 이 예에서는 rm 명령이 성공적으로 실행되었는지 확인할 수 있습니다.

     if [ $? -ne 0 ]; then
    echo "죄송합니다. 파일을 삭제할 수 없습니다."
    fi

6. 산술 연산을 위한 기본 계산기 만들기

마지막 예제에서는 아주 기본적인 계산기를 만들어 보겠습니다. 이 계산기를 실행하면 두 개의 숫자를 입력하고, 수행할 산술 연산을 선택할 수 있습니다.

calc.sh 스크립트의 코드는 다음과 같습니다.

 #!/bin/bash


echo "첫 번째 숫자를 입력하세요: "
read a

echo "두 번째 숫자를 입력하세요: "
read b


echo "수행할 산술 연산을 선택하세요 :"
echo "1. 덧셈"
echo "2. 뺄셈"
echo "3. 곱셈"
echo "4. 나눗셈"
read choice


case $choice in
1)
result=`echo "$a + $b" | bc`
;;

2)
result=`echo "$a - $b" | bc`
;;

3)
result=`echo "$a * $b" | bc`
;;

4)
result=`echo "scale=2; $a / $b" | bc`
;;
esac

echo "결과: $result"

Bash의 case … esac 구문은 다른 프로그래밍 언어의 switch 문과 유사합니다. 이 구문을 사용하여 여러 고정된 값(이 경우에는 선택 변수)을 테스트하고, 그에 따른 코드를 실행할 수 있습니다.

스크립트는 각 연산을 수행하기 위해 bc 명령어를 사용합니다.