긴 배치 스크립트에서 공통 문자열 반복

긴 배치 스크립트에서 공통 문자열 반복

저는 Bash와 스크립팅 전반에 경험이 없습니다. 명령이 ID를 출력하는 aws CLI와 관련된 스크립트를 작성 중입니다. 아래를 참조하세요:

#!/bin/bash

# Command 1

VAR1=$(aws ec2 create-vpc --query "Vpc.VpcId" --output text)

# Command 2

VAR2=$(aws ec2 create-subnet --query "Subnet.SubnetId" --output text)

aws ec2 명령의 출력은 이제 $VAR1 및 $VAR2를 통해 캡처한 "id-ffffffff"와 같습니다.

이제 각 명령의 결과를 콘솔에 출력하되 명령 결과에 따라 다른 메시지를 표시하고 싶습니다. 지금까지 나는 이것을 했습니다:

#!/bin/bash

VAR1=$(aws ec2 create-vpc --query "Vpc.VpcId" --output text)

if [ $? -eq 0 ]; then
    echo VPC created successfully... ${VAR1}
else
    echo "Command failed"
fi

# Command 2

VAR2=$(aws ec2 create-subnet --query "Subnet.SubnetId" --output text)

if [ $? -eq 0 ]; then
    echo Subnet created successfully... ${VAR2}
else
    echo "Command failed"
fi

이제 문제는 위에서 사용한 것과 같은 행(10+)이 많이 있고 각 행에 대해 동일한 if/else 문을 반복적으로 실행하는 것이 어리석은 일이라고 생각하지 않을 수 없다는 것입니다.

goto와 같은 것을 사용해야합니까? 여기서 가장 좋은 방법은 무엇입니까?

감사해요.

답변1

함수 만들기

report () {
    if [ $1 -eq 0 ]; then
        echo "$2"
    else
        echo "Command failed"
    fi

}

VAR1=$(aws ec2 create-vpc --query "Vpc.VpcId" --output text)

report $? "$VAR1"

VAR2=$(aws ec2 create-subnet --query "Subnet.SubnetId" --output text)

report $? "$VAR2"

aws ec2함수를 만들 수도 있을 것 같습니다 .

관련 정보