0

I am a beginner in bash and trying to nest for and if loop. I have written the below script to fetch all the EC2 instances from all the regions of my aws environment. The script syntax checks are fine, but when running the script getting below error. It seems the if condition is throwing error. Would appreciate if someone can point where I am going wrong.

main.sh: 11: [[: not found
main.sh: 23: [[: not found
main.sh: 11: [[: not found
main.sh: 23: [[: not found

Script:

#!/bin/bash

date=$(date +"%B-%Y")

echo Get instances in all regions....

  for env in stage prod 
    do
      if [[ "$env" == stage ]]; then

        #Get all the aws regions
        for region in $(aws ec2 describe-regions --output text | cut -f4)
        do
          #List Resources through aws CLI command and store in CSV file

          aws ec2 describe-instances --region "$region" --query 'Reservations[].Instances[].[Tags[?Key=='"'Name'"']|[0].Value,InstanceId,State.Name,InstanceType,PublicIpAddress,PrivateIpAddress,Placement.AvailabilityZone,Platform]' --output text --profile pepsico-stage | sed -E 's/\s+/,/g' | grep -v "windows" >> ec2stagelist-"$date".csv
        done
      elif [[ "$env" == prod ]]; then
          #Get all the aws regions
        for region in $(aws ec2 describe-regions --output text | cut -f4)
        do
          #List Resources through aws CLI command and store in CSV file

          aws ec2 describe-instances --region "$region" --query 'Reservations[].Instances[].[Tags[?Key=='"'Name'"']|[0].Value,InstanceId,State.Name,InstanceType,PublicIpAddress,PrivateIpAddress,Placement.AvailabilityZone,Platform]' --output text --profile pepsico-prod | sed -E 's/\s+/,/g' | grep -v "windows" >> ec2prodlist-"$date".csv
        done
      fi
    done
Dominique
  • 16,450
  • 15
  • 56
  • 112
Devops-Learner
  • 451
  • 1
  • 4
  • 16

0 Answers0