Learn Bash and SQL by Building a Bike Rental Shop - Build a Bike Rental Shop

Tell us what’s happening:

I have tried it many times even managed to restart the workspace but still this issue remains persistant.

Your code so far

Your browser information:

User Agent is: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/132.0.0.0 Safari/537.36

Challenge Information:

Learn Bash and SQL by Building a Bike Rental Shop - Build a Bike Rental Shop

what issue are you talking about?


This one. Sorry I couldn’t post a screenshots before

can you explain more?

As you can see there it is asking:
The variable will be t or empty. Below the if not available comment, add an if condition that checks if it’s empty. Put the send to main menu comment in it’s statements area.
And i followed exact steps but still it doesnt fulfill the condition given there

maybe you need to fix the indentation, maybe you need to remove all the others fi and comments

Yes, I did try that too and also cross checked if there are any extra fi out there but still no luck.

I do not know what you tried if you don’t share it. I see you have the comments 4 time and fi three times

#!/bin/bash
PSQL="psql -X --username=freecodecamp --dbname=bikes --tuples-only -c"
echo -e "\n~~~~~ Bike Rental Shop ~~~~~\n"
MAIN_MENU() {
  if [[ $1 ]]
then
  echo -e "\n$1"
fi
  echo "How may I help you?"
  echo -e "\n1. Rent a bike\n2. Return a bike\n3. Exit"
  read MAIN_MENU_SELECTION
  case $MAIN_MENU_SELECTION in
  1) RENT_MENU ;;
  2) RETURN_MENU ;;
  3) EXIT ;;
  *) MAIN_MENU "Please enter a valid option." ;;
esac
}

RENT_MENU() {
  # get available bikes
  AVAILABLE_BIKES=$($PSQL "SELECT bike_id, type, size FROM bikes WHERE available = true ORDER BY bike_id")
  

  # if no bikes available
  if [[ -z $AVAILABLE_BIKES ]]
then
  # send to main menu
  MAIN_MENU "Sorry, we don't have any bikes available right now."
  else
  # display available bikes
  echo -e "\nHere are the bikes we have available:"
  echo "$AVAILABLE_BIKES" | while read BIKE_ID BAR TYPE BAR SIZE
do
  echo "$BIKE_ID) $SIZE\" $TYPE Bike"
done

  # ask for bike to rent
  echo -e "\nWhich one would you like to rent?"
  read BIKE_ID_TO_RENT

  # if input is not a number
  if [[ ! $BIKE_ID_TO_RENT =~ ^[0-9]+$ ]]
then
  # send to main menu
  MAIN_MENU "That is not a valid bike number."
  else
  # get bike availability
  BIKE_AVAILABILITY=$($PSQL "SELECT available FROM bikes WHERE bike_id = $BIKE_ID_TO_RENT AND available = true")
  echo $BIKE_AVAILABILITY

  # if not available
  if [[ -z $BIKE_AVAILABILITY ]]
then
  # send to main menu
fi

  # send to main menu

fi

  # send to main menu
fi

  # send to main menu
}

RETURN_MENU() {
  echo "Return Menu"
}

EXIT() {
  echo -e "\nThank you for stopping in.\n"
}
MAIN_MENU

(This is the full code as you can see there all other fi are the part of if’s.

you have not removed the extra comments nor the extra fi

Can you please elaborate further. (like in which lines. Im sorry but i get things slow)

if you reset, how many times does the comment appear?

#!/bin/bash

PSQL="psql -X --username=freecodecamp --dbname=bikes --tuples-only -c"

echo -e "\n~~~~~ Bike Rental Shop ~~~~~\n"

MAIN_MENU() {
  if [[ $1 ]]
  then
    echo -e "\n$1"
  fi

  echo "How may I help you?" 
  echo -e "\n1. Rent a bike\n2. Return a bike\n3. Exit"
  read MAIN_MENU_SELECTION

  case $MAIN_MENU_SELECTION in
    1) RENT_MENU ;;
    2) RETURN_MENU ;;
    3) EXIT ;;
    *) MAIN_MENU "Please enter a valid option." ;;
  esac
}

RENT_MENU() {
  # get available bikes
  AVAILABLE_BIKES=$($PSQL "SELECT bike_id, type, size FROM bikes WHERE available = true ORDER BY bike_id")

  # if no bikes available
  if [[ -z $AVAILABLE_BIKES ]]
  then
    # send to main menu
    MAIN_MENU "Sorry, we don't have any bikes available right now."
  else
    # display available bikes
    echo -e "\nHere are the bikes we have available:"
    echo "$AVAILABLE_BIKES" | while read BIKE_ID BAR TYPE BAR SIZE
    do
      echo "$BIKE_ID) $SIZE\" $TYPE Bike"
    done

    # ask for bike to rent
    echo -e "\nWhich one would you like to rent?"
    read BIKE_ID_TO_RENT

    # if input is not a number
    if [[ ! $BIKE_ID_TO_RENT =~ ^[0-9]+$ ]]
    then
      # send to main menu
      MAIN_MENU "That is not a valid bike number."
    else
      # get bike availability
      BIKE_AVAILABILITY=$($PSQL "SELECT available FROM bikes WHERE bike_id = $BIKE_ID_TO_RENT AND available = true")
      echo $BIKE_AVAILABILITY
      
      # if not available
      

      # send to main menu

    fi
  fi
}

RETURN_MENU() {
  echo "Return Menu"
}

EXIT() {
  echo -e "\nThank you for stopping in.\n"
}

MAIN_MENU

As you can see when i reset it, the comment appears one time and fi 2 times

please try again, do not add more comments. The comment was there 4 times in the code you posted earlier

Yes I did try to reset multiple times, nowthe test runner simply fails

where is the code requested for this step?


Here is the updated one. but the issue still remains the same

you still have the comment twice