저는 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
함수를 만들 수도 있을 것 같습니다 .