Bash의 함수에 배열 전달

Naila Saad Siddiqui 2023년6월20일
  1. Bash 스크립트의 기능
  2. Bash에서 함수 호출
  3. Bash의 함수 인수
  4. Bash의 함수에 배열 전달
Bash의 함수에 배열 전달

이 작은 프로그래밍 튜토리얼은 Bash 스크립트에서 함수를 사용하고 배열을 전달하는 방법에 관한 것입니다. 실제 주제로 이동하기 전에 Bash 스크립팅을 간략하게 소개하겠습니다.

Bash 스크립트 파일에는 일련의 Bash 명령이 포함되어 있습니다. 이러한 명령은 명령줄에 자주 입력하는 명령(예: ls 또는 cp)과 명령줄에 입력할 수 있는 명령의 조합입니다.

명령줄에서 입력하고 실행할 수 있는 모든 명령은 스크립트 파일에 포함되어 실행되는 경우 동일한 작업을 수행합니다.

Bash 스크립트의 기능

셸 스크립트에서 재사용 가능한 코드 블록은 Bash 함수를 사용하여 그룹화됩니다. 대부분의 프로그래밍 언어는 프로시저, 메소드 또는 서브루틴과 같은 다른 이름으로도 참조되는 이 기능을 지원합니다.

재사용 가능한 코드 섹션을 하나의 이름으로 저장하는 방법을 Bash 함수라고 합니다. Bash 스크립트를 작성할 때 함수를 사용하면 두 가지 이점이 있습니다.

  1. 함수를 쉘 메모리로 직접 읽어서 나중에 사용할 수 있도록 저장할 수 있습니다. 오늘날의 컴퓨터에는 충분한 메모리가 있으므로 함수를 사용하는 것이 동일한 코드를 반복해서 작성하는 것보다 빠릅니다.
  2. 긴 쉘 스크립트는 함수의 도움을 받아 재사용 가능한 모듈식 코드 블록으로 나눌 수 있습니다. 청크는 만들고 유지하기가 더 간단합니다.

Bash에서 함수 선언

Bash에서 함수를 선언하는 방법에는 두 가지가 있습니다.

  1. 함수를 선언하는 한 가지 방법은 함수 이름을 다음과 같이 사용하는 것입니다.

    <function_name> () {
    		<set of commands>
    }
    
  2. 또 다른 방법은 다음과 같이 function 키워드를 사용하는 것입니다.

    function <function_name> {
    		< set of commands>
    }
    

두 유형의 선언에 대해 다음과 같은 한 줄 선언을 사용할 수도 있습니다.

function <function_name> { <set of commands>; }

함수를 사용할 때 다음 사실을 염두에 두어야 합니다.

  1. Bash 스크립트를 사용하든 터미널을 직접 사용하든 한 줄로 작성된 명령은 세미콜론(;)으로 끝나야 합니다.
  2. function 예약어가 추가된 경우 괄호는 선택 사항입니다.
  3. 함수 본문은 중괄호 또는 사이에 나타나는 명령으로 구성됩니다. 선언, 변수, 루프 또는 조건문은 본문에서 얼마든지 허용됩니다.
  4. 기능을 설명하는 이름을 지정하십시오. 기능과 명령을 테스트할 때는 필요하지 않지만 설명이 포함된 이름은 다른 개발자가 코드를 볼 때 유용합니다.

Bash에서 함수 호출

함수를 호출하려면 이름을 사용합니다. 함수가 호출되기 전에 선언되었는지 확인하십시오.

아래 코드를 살펴보겠습니다.

#!/bin/Bash
func1 () {
        echo Hello from function
        echo Good Bye!
}
func1

이 코드는 다음과 같은 출력을 제공합니다.

Bash에서 함수 출력

Bash의 함수 인수

함수에 인수를 전달하려면 함수 호출 후에 매개 변수를 추가하고 공백으로 구분해야 합니다. Bash 함수 인수 작업에는 아래 표에 나열된 몇 가지 옵션이 있습니다.

논쟁 목적
$0 터미널에 함수가 정의되면 이름을 저장합니다. Bash 스크립트에 지정된 경우 $0은 스크립트의 이름과 위치를 출력합니다.
$1, $2 이는 함수 이름 다음의 인수 위치에 해당합니다.
$# 이것은 총 번호의 수를 알려줍니다. 전달된 인수 수.
$@$* 이렇게 하면 전달된 인수의 배열 또는 목록 유형이 저장됩니다.
"$@" 예를 들어 "$1", "$2" 등과 같이 별도의 인수로 전달된 목록을 나눕니다.

Bash의 함수에 배열 전달

배열 목록을 함수에 전달하고 함수가 이를 별도의 변수로 나누어 화면에 출력하는 아래의 예를 고려하십시오.

#!/bin/Bash
function printArray() {
   a=("$@")
   for b in "${a[@]}";
      do
          echo "$b"
      done
}
array=("first" "second" "third")
printArray "${array[@]}

함수를 호출할 때 인수를 괄호로 묶은 목록으로 전달했습니다. 이것은 그것들을 배열로 만들고 함수는 그것들을 $@에 저장합니다.

그런 다음 해당 배열을 루프로 인쇄했습니다.

출력:

배열 전달 함수의 출력

관련 문장 - Bash Array