Repetindo strings comuns em um script de lote longo

0

Eu sou inexperiente com Bash e scripts em geral. Estou escrevendo um script envolvendo aws CLI, para o qual os comandos geram um id. Veja abaixo:

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

A saída dos comandos aws ec2 será algo como "id-ffffffff", que eu agora capturei por $ VAR1 e $ VAR2

Agora quero enviar o resultado de cada comando para o console, mas exibir mensagens diferentes com base no resultado do comando. Até agora, eu fiz assim:

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

O problema agora é que tenho muitas linhas como as que estou usando acima (10+) e não posso deixar de pensar que é bobagem executar repetidamente a mesma instrução if / else para cada linha.

Devo usar algo como um goto? Qual é a melhor prática aqui?

Obrigado.

    
por swin12 30.05.2017 / 22:47

1 resposta

4

Crie uma função

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"

Parece que você pode criar uma função para o aws ec2 também.

    
por 30.05.2017 / 23:09

Tags