저는 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 명령의 출력은 "id-ffffffff"와 같으며, 이제 $VAR1 및 $VAR2를 통해 캡처했습니다.
이제 각 명령의 결과를 콘솔에 출력하되 명령 결과에 따라 다른 메시지를 표시하려고 합니다. 지금까지 나는 다음과 같이 해왔습니다.
#!/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
도 만들 수 있는 것 같습니다.