Wiederholen allgemeiner Zeichenfolgen in einem langen Batch-Skript

Wiederholen allgemeiner Zeichenfolgen in einem langen Batch-Skript

Ich habe keine Erfahrung mit Bash und Skripting im Allgemeinen. Ich schreibe ein Skript mit AWS CLI, für das die Befehle eine ID ausgeben. Siehe unten:

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

Die Ausgabe der aws ec2-Befehle wird etwa "id-ffffffff" sein, was ich jetzt über $VAR1 und $VAR2 erfasst habe

Ich möchte nun das Ergebnis jedes Befehls auf der Konsole ausgeben, aber je nach Ergebnis des Befehls unterschiedliche Meldungen anzeigen. Bisher habe ich es folgendermaßen gemacht:

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

Das Problem besteht nun darin, dass ich viele Zeilen wie die oben verwendeten habe (10+), und ich kann nicht anders, als zu denken, dass es albern ist, für jede Zeile wiederholt dieselbe if/else-Anweisung auszuführen.

Sollte ich so etwas wie ein goto verwenden? Was ist hier die beste Vorgehensweise?

Danke.

Antwort1

Erstellen einer Funktion

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 ec2Es scheint, dass Sie auch dafür eine Funktion erstellen können .

verwandte Informationen