在長批次腳本中重複常用字串

在長批次腳本中重複常用字串

一般來說,我對 Bash 和腳本編寫缺乏經驗。我正在編寫一個涉及 aws CLI 的腳本,其中命令輸出一個 id。見下文:

#!/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也可以為它創建一個函數。

相關內容