Повторение общих строк в длинном пакетном скрипте

Повторение общих строк в длинном пакетном скрипте

Я неопытен с Bash и скриптингом в целом. Я пишу скрипт с использованием aws CLI, для которого команды выводят идентификатор. Смотрите ниже:

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

Вывод команд aws ec2 будет выглядеть примерно так: «id-ffffffff», который я сейчас перехватил с помощью $VAR1 и $VAR2.

Теперь я хочу вывести результат каждой команды на консоль, но отображать разные сообщения в зависимости от результата команды. До сих пор я делал это так:

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

Проблема в том, что теперь у меня много строк, подобных тем, что я использую выше (более 10), и я не могу не думать, что глупо повторно запускать один и тот же оператор if/else для каждой строки.

Стоит ли использовать что-то вроде goto? Что здесь лучше всего использовать?

Спасибо.

решение1

Создать функцию

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Кажется, вы также можете создать функцию для этого .

Связанный контент