Repetindo strings comuns em um script em lote longo

Repetindo strings comuns em um script em lote longo

Sou inexperiente com Bash e scripts em geral. Estou escrevendo um script envolvendo AWS CLI, para o qual os comandos geram um ID. Veja abaixo:

#!/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)

A saída dos comandos aws ec2 será algo como "id-ffffffff", que agora capturei via $VAR1 e $VAR2

Agora quero enviar o resultado de cada comando para o console, mas exibir mensagens diferentes com base no resultado do comando. Até agora, fiz assim:

#!/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

O problema é que agora tenho muitas linhas como as que estou usando acima (10+) e não posso deixar de pensar que é bobagem executar repetidamente a mesma instrução if/else para cada linha.

Devo usar algo como um goto? Qual é a melhor prática aqui?

Obrigado.

Responder1

Crie uma função

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"

Parece que você aws ec2também pode criar uma função para.

informação relacionada