Bash에서 선택적 입력 인수 가져오기

MD Aminul Islam 2023년6월20일
Bash에서 선택적 입력 인수 가져오기

때로는 인수를 전달하거나 인수를 전달하지 않고 둘 다에서 실행할 수 있는 동적 함수를 만들어야 합니다. 이렇게 하려면 함수를 호출할 때 인수가 전달되지 않으면 기본 인수를 사용할 수 있도록 이러한 인수에 대한 일부 기본값을 설정해야 합니다.

이 문서에서는 함수에 대한 선택적 입력 인수를 만드는 방법을 보여줍니다. 또한 주제를 더 쉽게 만들기 위해 몇 가지 예와 설명을 살펴보겠습니다.

Bash에서 선택적 입력 인수 가져오기

아래 예에서는 기본값을 인쇄합니다. 기본값을 포함하는 4개의 변수를 선언했습니다.

예제의 코드는 다음과 같습니다.

VAR1=${1:-foo}
VAR2=${2:-bar}
VAR3=${3:-1}
VAR4=${4:-$(date)}

echo "$VAR1"
echo "$VAR2"
echo "$VAR3"
echo "$VAR4"

코드 실행 후 아래와 같은 결과를 얻습니다.

foo
bar
1
Sat Aug 13 14:59:31 +06 2022

이제 고급 예제를 살펴보겠습니다. 아래 공유된 예에서 우리는 0, 1, 2 매개변수로 작동하고 함수 내부에 기본값을 설정할 수 있는 함수를 만들었습니다.

이제 예제의 코드는 다음과 같습니다.

FindSum()
{
    VAR1=${1:-40}
    VAR2=${2:-50}

    if [ $# -lt 1 ];
    then
        echo "The provided parameters are: $VAR1, $VAR2."
    elif [ $# -lt 2 ];
    then
        echo
        echo "The provided parameters is: $VAR2."
    else
        echo
        echo "No parameters provided"
        VAR1=$1
        VAR2=$2
    fi
    SUM=$((VAR1+VAR2))
    echo "The sum of $VAR1 and $VAR2 is $SUM"
}

FindSum
FindSum 40
FindSum 70 30

코드를 부분별로 설명하겠습니다.

먼저 VAR1=${1:-40}VAR2=${2:-50} 행을 사용하여 변수의 기본값을 설정합니다. 그런 다음 이러한 변수에 대한 값이 주어졌는지 여부를 확인했습니다.

값이 제공하지 않으면 기본값을 사용해야 합니다. 그렇지 않으면 사용자가 지정한 값을 사용합니다.

마지막으로 SUM=$((VAR1+VAR2)) 줄을 사용하여 합계 연산을 수행하고 결과를 인쇄했습니다. 여기에서는 FindSum을 통해 인수 없이 함수를 호출했습니다.

다시 한 번 FindSum 40 줄을 사용하여 하나의 인수로 함수를 호출했습니다. 그리고 FindSum 70 30 줄을 사용하여 두 개의 인수가 있는 함수를 호출했습니다.

The provided parameters are: 40, 50.
The sum of 40 and 50 is 90

The provided parameters is: 50.
The sum of 40 and 50 is 90

No parameters provided
The sum of 70 and 30 is 100

이 기사에서 사용된 모든 코드는 Bash로 작성되었습니다. Linux Shell 환경에서만 작동합니다.

MD Aminul Islam avatar MD Aminul Islam avatar

Aminul Is an Expert Technical Writer and Full-Stack Developer. He has hands-on working experience on numerous Developer Platforms and SAAS startups. He is highly skilled in numerous Programming languages and Frameworks. He can write professional technical articles like Reviews, Programming, Documentation, SOP, User manual, Whitepaper, etc.

LinkedIn

관련 문장 - Bash Input