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

Bash 스크립팅은 Linux 컴퓨터를 프로그래밍하는 가장 인기 있고 접근 가능한 방법 중 하나입니다. 이러한 간단한 스크립트 예제는 프로세스를 이해하는 데 도움이 되며 Bash 프로그래밍의 기본 사항을 소개합니다.

1. Bash에서 Hello World를 인쇄하는 방법

Hello World 예제는 모든 프로그래밍 언어를 배울 수 있는 좋은 방법이며 Bash도 예외는 아닙니다.

Bash를 사용하여 “Hello World”를 인쇄하는 방법은 다음과 같습니다.

  • 텍스트 편집기를 열고 다음 코드 줄이 포함된 새 파일 편집을 시작합니다.
  • Bash 스크립트의 첫 번째 줄은 항상 다음과 같아야 합니다.
     #!/bin/bash 

    Shebang 명령(#!/bin/bash)은 쉘이 스크립트 실행 방법을 결정하는 데 사용하므로 필수적입니다. 이 경우 Bash 인터프리터를 사용합니다.

  • # 기호로 시작하는 모든 줄은 주석입니다. Shebang 라인은 특별한 경우이지만 자신만의 주석을 사용하여 코드를 설명할 수 있습니다. 2번째 줄에 주석을 추가하세요. 예:
      
  • echo 명령 뒤에 인쇄하려는 값을 사용하여 표준 출력으로 인쇄할 수 있습니다. 3행에 다음을 추가합니다.
     echo "Hello World" 
  • 가급적 .sh 확장자를 사용하여 스크립트를 저장하세요(예: hello_world.sh). 확장은 필수 사항은 아니지만 준수하는 데 유용한 규칙입니다.
  • 스크립트를 실행하려면 파일을 실행 가능하게 만드세요. +x(“실행 가능”) 인수 및 쉘 스크립트 이름과 함께 chmod(“모드 변경”) 명령을 사용하십시오.
     chmod +x hello_world.sh 
  • 해당 디렉터리 내에서 스크립트를 실행하려면 다음 명령을 사용하세요.
     ./hello_world.sh 
  • 스크립트가 실행되면 “Hello World”라는 텍스트가 터미널에 인쇄됩니다.
  • 2. 입력을 읽어 디렉토리 생성

    일반적으로 명령줄에서 실행할 수 있는 모든 프로그램을 스크립트에서 실행할 수 있습니다. 예를 들어, mkdir 명령을 사용하여 스크립트에서 새 디렉터리를 만들 수 있습니다.

  • 이전과 동일한 shebang 줄로 시작합니다.
     #!/bin/bash 
  • 이전과 같이 echo 명령을 사용하여 사용자에게 디렉터리 이름을 묻는 메시지를 표시합니다.
     echo "Enter new directory name:" 
  • 내장된 읽기 명령을 사용하여 사용자 입력을 가져옵니다. 단일 인수는 쉘이 입력을 저장할 변수의 이름을 지정합니다.
     read newdir 
  • 변수에 저장된 값을 사용해야 하는 경우 이름 앞에 달러 기호($)를 붙입니다. 입력 변수의 내용을 mkdir 명령에 대한 인수로 전달하여 새 디렉터리를 만들 수 있습니다.
     mkdir $newdir 
  • 이 스크립트를 실행하면 입력하라는 메시지가 표시됩니다. 유효한 디렉터리 이름을 입력하면 스크립트가 현재 디렉터리에 이름을 생성하는 것을 볼 수 있습니다.
  •   Zenmap을 사용하여 Linux PC에서 열린 포트를 스캔하는 방법

    3. 명령줄 인수를 사용하여 디렉터리 생성

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

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

  • 이전 예제의 mkdir 명령을 사용하여 디렉터리를 만듭니다. 그러나 이번에는 내장 변수 $1을 사용하십시오.
     #!/bin/bash
    mkdir $1
  • 이번에는 선택한 새 디렉터리 이름을 인수로 전달하여 스크립트를 실행합니다.
     ./arg_dir.sh Test 
  • 인수를 전혀 제공하지 않고 스크립트를 실행하면 어떻게 되는지 궁금할 것입니다. 시도해보고 확인하십시오. “usage: mkdir”을 시작하는 오류 메시지가 표시됩니다.

    명령줄 인수가 없으면 $1 값은 비어 있습니다. 스크립트가 mkdir을 호출하면 인수가 전달되지 않으며 mkdir 명령은 해당 오류를 반환합니다. 이를 방지하려면 상태를 직접 확인하고 보다 친숙한 오류를 제시할 수 있습니다.

  • 언제나 그렇듯, shebang 줄부터 시작하세요:
     #!/bin/bash 
  • mkdir을 호출하기 전에 첫 번째 인수가 비어 있는지 확인하십시오(즉, 인수가 없음). 조건에 따라 코드를 실행하는 Bash의 if 문을 사용하여 이 작업을 수행할 수 있습니다.
     if ["$1" = ""]; then 
  • 첫 번째 인수가 비어 있으면 오류를 인쇄하고 스크립트를 종료합니다.
         echo "Please provide a new directory name as the first argument"
        exit
  • 약간 이상한 “fi” 키워드(“if”가 반대임)는 Bash에서 if 문의 끝을 나타냅니다.
     fi 
  • 이제 인수가 있는 경우를 처리하기 위해 스크립트를 이전처럼 계속할 수 있습니다.
     mkdir $1 
  • 이 새 버전의 스크립트를 실행할 때 인수 포함을 잊어버린 경우 메시지가 표시됩니다.

    4. Bash 기능을 사용하여 파일 삭제

    동일한 코드를 반복하고 있다면 함수로 래핑하는 것을 고려해 보세요. 그런 다음 필요할 때마다 해당 함수를 호출할 수 있습니다.

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

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

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

     del_file test.txt 

  • 함수를 호출하면 특수 $? 값은 실행한 마지막 명령의 종료 상태입니다. 종료 상태는 오류 확인에 유용합니다. 이 예에서는 rm 명령이 성공했는지 테스트할 수 있습니다.

     if [ $? -ne 0 ]; then
        echo "Sorry, could not delete the file"
    fi

    5. 산술 계산을 위한 기본 계산기 만들기

    이 마지막 예는 매우 기본적인 계산기를 보여줍니다. 이를 실행하면 두 개의 값을 입력한 다음 이를 수행할 산술 연산을 선택합니다.

      systemd로 시작 시 Linux 프로그램을 실행하는 방법

    calc.sh의 코드는 다음과 같습니다.

     #!/bin/bash


    echo "Enter first number: "
    read a

    echo "Enter second number: "
    read b


    echo "Enter Arithmetic Operation Choice :"
    echo "1. Addition"
    echo "2. Subtraction"
    echo "3. Multiplication"
    echo "4. Division"
    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: $result"

    다른 언어의 스위치 문에 해당하는 Bash의 case … esac 사용에 유의하세요. 이를 통해 여러 고정 값에 대해 값(이 경우 선택 변수)을 테스트하고 관련 코드를 실행할 수 있습니다.

    이 스크립트는 bc 명령을 사용하여 각 계산을 수행합니다.