Repetir cadenas comunes en un script por lotes largo

Repetir cadenas comunes en un script por lotes largo

No tengo experiencia con Bash y scripting en general. Estoy escribiendo un script que involucra AWS CLI, para el cual los comandos generan una identificación. Vea abajo:

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

La salida de los comandos de AWS EC2 será algo así como "id-ffffffff", que ahora capturé mediante $VAR1 y $VAR2.

Ahora quiero enviar el resultado de cada comando a la consola, pero mostrar mensajes diferentes según el resultado del comando. Hasta ahora lo he hecho así:

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

El problema ahora es que tengo muchas líneas como las que estoy usando arriba (10+) y no puedo evitar pensar que es una tontería ejecutar repetidamente la misma declaración if/else para cada línea.

¿Debería usar algo como goto? ¿Cuál es la mejor práctica aquí?

Gracias.

Respuesta1

Crear una función

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 ec2Parece que también puedes crear una función para .

información relacionada