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