logo

배쉬 기능

이 주제에서는 bash 기능의 기본 사항과 bash 쉘 스크립팅에서 작동하는 방식을 설명했습니다.

Bash 스크립팅의 함수는 코드를 재사용할 수 있는 훌륭한 옵션입니다. Bash 함수는 Bash 스크립트 내에서 여러 번 호출할 수 있는 명령 세트로 정의할 수 있습니다. Bash에서 함수의 목적은 스크립트를 더 읽기 쉽게 만들고 동일한 코드를 반복해서 작성하지 않도록 돕는 것입니다. 또한 개발자는 복잡하고 긴 코드를 필요할 때마다 호출할 수 있는 작은 부분으로 나눌 수 있습니다. 함수는 언제든지 반복적으로 호출할 수 있으므로 코드를 재사용, 최적화 및 최소화할 수 있습니다.

다음은 bash 기능에 대한 몇 가지 주요 사항입니다.

자바 배열 목록
  • 함수를 사용하려면 먼저 쉘 스크립트에서 함수를 선언해야 합니다.
  • 인수는 함수에 전달될 수 있으며 함수 내에서 , 등으로 액세스할 수 있습니다.
  • 지역 변수는 함수 내에서 할당될 수 있으며, 이러한 변수의 범위는 해당 특정 함수에만 적용됩니다.
  • Bash 셸에 내장된 명령은 함수를 사용하여 재정의할 수 있습니다.

통사론

Bash 함수 선언 구문은 두 가지 형식으로 정의할 수 있습니다.

1. 첫 번째 방법은 함수 이름으로 시작하고 그 뒤에 괄호가 옵니다. 가장 선호되고 일반적으로 사용되는 방법은 다음과 같습니다.

 function_name () { commands } 

단일 라인 버전은 아래와 같이 언급될 수 있습니다:

 function_name () { commands; } 

2. 두 번째 방법은 함수 예약어로 시작하고 그 뒤에 함수 이름이 옵니다.

 function function_name { commands } 

단일 라인 버전은 아래와 같이 언급될 수 있습니다:

 function function_name { commands; } 

대부분의 프로그래밍 언어에 비해 Bash 기능은 다소 제한적입니다. 몇 가지 예를 통해 개념을 이해해 보겠습니다.

예: 방법 1

 #!/bin/bash JTP () { echo 'Welcome to Javatpoint.' } JTP 

산출

 Welcome to Javatpoint. 

예: 방법 2

 #!/bin/bash function JTP { echo 'Welcome to Javatpoint.' } JTP 

산출

 Welcome to Javatpoint. 

인수 전달

대부분의 프로그래밍 언어와 마찬가지로 bash 함수에서 인수를 전달하고 데이터를 처리할 수도 있습니다. bash 스크립트에 명령줄 인수를 전달하는 것과 유사한 방식으로 함수에 데이터를 삽입할 수 있습니다.

bash 함수에 여러 인수를 전달하려면 함수 이름 바로 뒤에 인수를 삽입해야 합니다. 함수 이름과 인수 사이에는 공백을 적용해야 합니다. 공백이 포함된 인수의 구문 분석이 잘못되는 것을 방지하기 위해 인수 주위에 큰따옴표를 사용하는 것도 좋은 선택입니다.

다음은 bash 함수에 인수를 전달하는 데 대한 몇 가지 주요 사항입니다.

  • 주어진 인수는 함수 이름 뒤의 인수 위치에 해당하는 , , ... $n으로 액세스됩니다.
  • 이 주제에서는 bash 기능의 기본 사항과 bash 쉘 스크립팅에서 작동하는 방식을 설명했습니다.

    Bash 스크립팅의 함수는 코드를 재사용할 수 있는 훌륭한 옵션입니다. Bash 함수는 Bash 스크립트 내에서 여러 번 호출할 수 있는 명령 세트로 정의할 수 있습니다. Bash에서 함수의 목적은 스크립트를 더 읽기 쉽게 만들고 동일한 코드를 반복해서 작성하지 않도록 돕는 것입니다. 또한 개발자는 복잡하고 긴 코드를 필요할 때마다 호출할 수 있는 작은 부분으로 나눌 수 있습니다. 함수는 언제든지 반복적으로 호출할 수 있으므로 코드를 재사용, 최적화 및 최소화할 수 있습니다.

    다음은 bash 기능에 대한 몇 가지 주요 사항입니다.

    • 함수를 사용하려면 먼저 쉘 스크립트에서 함수를 선언해야 합니다.
    • 인수는 함수에 전달될 수 있으며 함수 내에서 $1, $2 등으로 액세스할 수 있습니다.
    • 지역 변수는 함수 내에서 할당될 수 있으며, 이러한 변수의 범위는 해당 특정 함수에만 적용됩니다.
    • Bash 셸에 내장된 명령은 함수를 사용하여 재정의할 수 있습니다.

    통사론

    Bash 함수 선언 구문은 두 가지 형식으로 정의할 수 있습니다.

    1. 첫 번째 방법은 함수 이름으로 시작하고 그 뒤에 괄호가 옵니다. 가장 선호되고 일반적으로 사용되는 방법은 다음과 같습니다.

     function_name () { commands } 

    단일 라인 버전은 아래와 같이 언급될 수 있습니다:

     function_name () { commands; } 

    2. 두 번째 방법은 함수 예약어로 시작하고 그 뒤에 함수 이름이 옵니다.

     function function_name { commands } 

    단일 라인 버전은 아래와 같이 언급될 수 있습니다:

     function function_name { commands; } 

    대부분의 프로그래밍 언어에 비해 Bash 기능은 다소 제한적입니다. 몇 가지 예를 통해 개념을 이해해 보겠습니다.

    예: 방법 1

     #!/bin/bash JTP () { echo 'Welcome to Javatpoint.' } JTP 

    산출

     Welcome to Javatpoint. 

    예: 방법 2

     #!/bin/bash function JTP { echo 'Welcome to Javatpoint.' } JTP 

    산출

     Welcome to Javatpoint. 

    인수 전달

    대부분의 프로그래밍 언어와 마찬가지로 bash 함수에서 인수를 전달하고 데이터를 처리할 수도 있습니다. bash 스크립트에 명령줄 인수를 전달하는 것과 유사한 방식으로 함수에 데이터를 삽입할 수 있습니다.

    bash 함수에 여러 인수를 전달하려면 함수 이름 바로 뒤에 인수를 삽입해야 합니다. 함수 이름과 인수 사이에는 공백을 적용해야 합니다. 공백이 포함된 인수의 구문 분석이 잘못되는 것을 방지하기 위해 인수 주위에 큰따옴표를 사용하는 것도 좋은 선택입니다.

    다음은 bash 함수에 인수를 전달하는 데 대한 몇 가지 주요 사항입니다.

    • 주어진 인수는 함수 이름 뒤의 인수 위치에 해당하는 $1, $2, $3 ... $n으로 액세스됩니다.
    • $0 변수는 함수 이름용으로 예약되어 있습니다.
    • $# 변수는 함수에 제공된 위치 인수/매개변수의 수를 보유하는 데 사용됩니다.
    • $* 및 $@ 변수는 함수에 제공된 모든 인수/매개변수를 보유하는 데 사용됩니다.
      • $*를 큰따옴표(예: '$*' )와 함께 사용하면 공백으로 구분된 단일 문자열로 확장됩니다. 예를 들어 '$1 $2 $n 등'입니다.
      • $@ 를 큰따옴표(예: '$@' )와 함께 사용하면 별도의 문자열로 확장됩니다. 예를 들어 '$1' '$2' '$n' 등입니다.
      • $* 및 $#을 큰따옴표와 함께 사용하지 않으면 둘 다 동일합니다.

    다음은 함수에 인수를 전달하고 함수 내부의 인수에 액세스하는 방법에 대한 절차를 보여주는 코드입니다.

    배시 스크립트

     #!/bin/bash #Script to pass and access arguments function_arguments() { echo $1 echo $2 echo $3 echo $4 echo $5 } #Calling function_arguments function_arguments 'We''welcome''you''on''Javatpoint.' 

    산출

    배쉬 기능

    이 스크립트에서는 function_arguments를 호출한 후 'We', 'welcome', 'you', 'on' 및 'Javatpoint' 값을 추가했습니다. 해당 값은 함수_인수 매개변수로 사용되어 지역 변수에 저장됩니다. 그러나 다른 언어와 달리 인터프리터는 전달된 값을 미리 정의된 변수에 저장하고 전달된 매개변수의 순서에 따라 이름이 지정됩니다.

    예를 들어,

    '우리' 단어는 변수에 저장됩니다 1 .
    '환영' 단어는 변수에 저장됩니다 2 .
    '너' 단어는 변수에 저장됩니다 .
    '에' 단어는 변수에 저장됩니다 4 .
    '자바트포인트' 단어는 변수에 저장됩니다 5 .

    가변 범위

    전역 변수는 범위에 관계없이 스크립트 내 어디에서나 액세스할 수 있는 변수로 정의됩니다. 기본적으로 모든 변수는 함수 내부에서 선언된 경우에도 전역 변수로 정의됩니다. 변수를 지역 변수로 생성할 수도 있습니다. 지역 변수는 함수 본문 내에서 ?local? 처음 할당될 때 키워드입니다. 해당 함수 내에서만 액세스할 수 있습니다. 다른 함수에서 동일한 이름을 가진 지역 변수를 만들 수 있습니다. 지역 변수를 추가하려면 다음 구문을 사용할 수 있습니다.

     local var_name= 

    Bash 스크립팅에서 변수 범위가 작동하는 방식을 더 잘 이해하려면 다음 예를 확인하세요.

    배쉬 스크립트

     #!/bin/bash v1='A' v2='B' my_var () { local v1='C' v2='D' echo 'Inside Function' echo 'v1 is $v1.' echo 'v2 is $v2.' } echo 'Before Executing the Function' echo 'v1 is $v1.' echo 'v2 is $v2.' my_var echo 'After Executing the Function' echo 'v1 is $v1.' echo 'v2 is $v2.' 

    산출

    배쉬 기능

    출력에 따라 함수 본문 내에서 기존 전역 변수와 동일한 이름을 가진 지역 변수를 설정하면 해당 변수가 전역 변수보다 우선합니다. 함수 내에서 전역 변수를 수정할 수 있습니다.

    반환 값

    대부분의 프로그래밍 언어에는 함수에 대한 값을 반환한다는 개념이 있습니다. 이는 함수가 데이터를 원래 호출 위치로 다시 보내야 함을 의미합니다. '실제' 프로그래밍 언어의 함수와 달리 Bash 함수는 호출 시 값을 반환하는 기능을 지원하지 않습니다. 그러나 이를 통해 프로그램이나 명령이 종료 상태로 종료되는 방식과 유사한 반환 상태를 설정할 수 있습니다. Bash 함수가 완료되면 반환 값은 함수에서 마지막으로 실행된 문의 상태입니다. 성공 상태인 경우 0을 반환하고, 실패인 경우 1~255 범위의 0이 아닌 십진수를 반환합니다.

    반환 상태는 'return' 키워드를 사용하여 나타낼 수 있으며, 변수 $?에 할당됩니다. return 문은 함수를 종료하고 함수의 종료 상태로 작동합니다.

    예를 들어, 다음 코드를 고려해보세요:

    배시 스크립트

     #!/bin/bash #Setting up a return status for a function print_it () { echo Hello $1 return 5 } print_it User print_it Reader echo The previous function returned a value of $? 

    산출

    배쉬 기능

    함수에서 값을 반환하는 또 다른 더 나은 옵션은 값을 다음으로 보내는 것입니다. 표준 출력 사용하여 에코 또는 printf 아래와 같이 명령을 실행합니다.

    배시 스크립트

     #!/bin/bash print_it () { local my_greet='Welcome to Javatpoint.' echo '$my_greet' } my_greet='$(print_it)' echo $my_greet 

    산출

     Welcome to Javatpoint. 

    명령 재정의

    재정의하려는 명령과 동일한 이름을 가진 함수를 생성하여 bash 명령을 재정의할 수 있는 옵션이 있습니다. 예를 들어 'echo' 명령을 무시하려면 'echo'라는 이름의 함수를 만들어야 합니다.

    bash 명령을 재정의하는 이 개념은 특정 옵션과 함께 명령을 사용하려는 경우와 같은 일부 시나리오에서 도움이 될 수 있습니다. 또한 스크립트 내에서 전체 명령에 여러 번 옵션을 제공하고 싶지 않은 경우도 있습니다. 이러한 경우 옵션을 사용하여 명령에 대한 내장 bash 명령을 재정의할 수 있습니다. 이제 몇 가지 예를 통해 Bash Shell Scripting에서 명령을 재정의하는 개념을 이해해 보겠습니다.

    이 예에서는 'echo' 명령을 재정의하고 'echo' 명령에 인수 형식으로 타임스탬프를 추가했습니다.

    배시 스크립트

     #!/bin/bash #Script to override command using function echo () { builtin echo -n `date +'[%m-%d %H:%M:%S]'` ': ' builtin echo $1 } echo 'Welcome to Javatpoint.' 

    산출

    배쉬 기능

    결론

    이번 주제에서는 Bash 함수에 대해 설명했습니다. Bash 기능은 특정 작업을 수행하기 위해 개발된 재사용 가능한 코드 블록으로 간주됩니다. 일단 정의되면 스크립트 내에서 여러 번 호출할 수 있습니다.


    변수는 함수 이름용으로 예약되어 있습니다.
  • $# 변수는 함수에 제공된 위치 인수/매개변수의 수를 보유하는 데 사용됩니다.
  • $* 및 $@ 변수는 함수에 제공된 모든 인수/매개변수를 보유하는 데 사용됩니다.
    • $*를 큰따옴표(예: '$*' )와 함께 사용하면 공백으로 구분된 단일 문자열로 확장됩니다. 예를 들어 ' $n 등'입니다.
    • $@ 를 큰따옴표(예: '$@' )와 함께 사용하면 별도의 문자열로 확장됩니다. 예를 들어 '' '' '$n' 등입니다.
    • $* 및 $#을 큰따옴표와 함께 사용하지 않으면 둘 다 동일합니다.

다음은 함수에 인수를 전달하고 함수 내부의 인수에 액세스하는 방법에 대한 절차를 보여주는 코드입니다.

배시 스크립트

 #!/bin/bash #Script to pass and access arguments function_arguments() { echo  echo  echo  echo  echo  } #Calling function_arguments function_arguments 'We''welcome''you''on''Javatpoint.' 

산출

배쉬 기능

이 스크립트에서는 function_arguments를 호출한 후 'We', 'welcome', 'you', 'on' 및 'Javatpoint' 값을 추가했습니다. 해당 값은 함수_인수 매개변수로 사용되어 지역 변수에 저장됩니다. 그러나 다른 언어와 달리 인터프리터는 전달된 값을 미리 정의된 변수에 저장하고 전달된 매개변수의 순서에 따라 이름이 지정됩니다.

예를 들어,

'우리' 단어는 변수에 저장됩니다 1 .
'환영' 단어는 변수에 저장됩니다 2 .
'너' 단어는 변수에 저장됩니다 .
'에' 단어는 변수에 저장됩니다 4 .
'자바트포인트' 단어는 변수에 저장됩니다 5 .

가변 범위

전역 변수는 범위에 관계없이 스크립트 내 어디에서나 액세스할 수 있는 변수로 정의됩니다. 기본적으로 모든 변수는 함수 내부에서 선언된 경우에도 전역 변수로 정의됩니다. 변수를 지역 변수로 생성할 수도 있습니다. 지역 변수는 함수 본문 내에서 ?local? 처음 할당될 때 키워드입니다. 해당 함수 내에서만 액세스할 수 있습니다. 다른 함수에서 동일한 이름을 가진 지역 변수를 만들 수 있습니다. 지역 변수를 추가하려면 다음 구문을 사용할 수 있습니다.

 local var_name= 

Bash 스크립팅에서 변수 범위가 작동하는 방식을 더 잘 이해하려면 다음 예를 확인하세요.

배쉬 스크립트

 #!/bin/bash v1='A' v2='B' my_var () { local v1='C' v2='D' echo 'Inside Function' echo 'v1 is $v1.' echo 'v2 is $v2.' } echo 'Before Executing the Function' echo 'v1 is $v1.' echo 'v2 is $v2.' my_var echo 'After Executing the Function' echo 'v1 is $v1.' echo 'v2 is $v2.' 

산출

배쉬 기능

출력에 따라 함수 본문 내에서 기존 전역 변수와 동일한 이름을 가진 지역 변수를 설정하면 해당 변수가 전역 변수보다 우선합니다. 함수 내에서 전역 변수를 수정할 수 있습니다.

반환 값

대부분의 프로그래밍 언어에는 함수에 대한 값을 반환한다는 개념이 있습니다. 이는 함수가 데이터를 원래 호출 위치로 다시 보내야 함을 의미합니다. '실제' 프로그래밍 언어의 함수와 달리 Bash 함수는 호출 시 값을 반환하는 기능을 지원하지 않습니다. 그러나 이를 통해 프로그램이나 명령이 종료 상태로 종료되는 방식과 유사한 반환 상태를 설정할 수 있습니다. Bash 함수가 완료되면 반환 값은 함수에서 마지막으로 실행된 문의 상태입니다. 성공 상태인 경우 0을 반환하고, 실패인 경우 1~255 범위의 0이 아닌 십진수를 반환합니다.

반환 상태는 'return' 키워드를 사용하여 나타낼 수 있으며, 변수 $?에 할당됩니다. return 문은 함수를 종료하고 함수의 종료 상태로 작동합니다.

예를 들어, 다음 코드를 고려해보세요:

배시 스크립트

 #!/bin/bash #Setting up a return status for a function print_it () { echo Hello  return 5 } print_it User print_it Reader echo The previous function returned a value of $? 

산출

배쉬 기능

함수에서 값을 반환하는 또 다른 더 나은 옵션은 값을 다음으로 보내는 것입니다. 표준 출력 사용하여 에코 또는 printf 아래와 같이 명령을 실행합니다.

배시 스크립트

 #!/bin/bash print_it () { local my_greet='Welcome to Javatpoint.' echo '$my_greet' } my_greet='$(print_it)' echo $my_greet 

산출

 Welcome to Javatpoint. 

명령 재정의

재정의하려는 명령과 동일한 이름을 가진 함수를 생성하여 bash 명령을 재정의할 수 있는 옵션이 있습니다. 예를 들어 'echo' 명령을 무시하려면 'echo'라는 이름의 함수를 만들어야 합니다.

bash 명령을 재정의하는 이 개념은 특정 옵션과 함께 명령을 사용하려는 경우와 같은 일부 시나리오에서 도움이 될 수 있습니다. 또한 스크립트 내에서 전체 명령에 여러 번 옵션을 제공하고 싶지 않은 경우도 있습니다. 이러한 경우 옵션을 사용하여 명령에 대한 내장 bash 명령을 재정의할 수 있습니다. 이제 몇 가지 예를 통해 Bash Shell Scripting에서 명령을 재정의하는 개념을 이해해 보겠습니다.

이 예에서는 'echo' 명령을 재정의하고 'echo' 명령에 인수 형식으로 타임스탬프를 추가했습니다.

배시 스크립트

 #!/bin/bash #Script to override command using function echo () { builtin echo -n `date +'[%m-%d %H:%M:%S]'` ': ' builtin echo  } echo 'Welcome to Javatpoint.' 

산출

배쉬 기능

결론

이번 주제에서는 Bash 함수에 대해 설명했습니다. Bash 기능은 특정 작업을 수행하기 위해 개발된 재사용 가능한 코드 블록으로 간주됩니다. 일단 정의되면 스크립트 내에서 여러 번 호출할 수 있습니다.