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