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