在长批处理脚本中重复常用字符串

在长批处理脚本中重复常用字符串

一般来说,我对 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也可以为它创建一个函数。

相关内容