Kevin Medjiako
Kevin Medjiako

Reputation: 109

Making a shell script but the script is not taking any input

I am trying to make a shell script that works as an ordering system. I have started with the first steps but it does not take the input I am not sure of what I am doing wrong. I have attached an image of what end result should be. What is the next step I should take and what should I begin to researchenter image description here

#!/bin/bash

clear
echo "orderBeds"
read -p "Please Enter you choice (Quit/Order)" order
if [$order -e Order|order]
then
    echo "Please enter you name?"
elif [$order -e Quit|quit]
then 
     exit 
fi
done

Upvotes: 0

Views: 734

Answers (2)

Luis Lavaire
Luis Lavaire

Reputation: 701

I'll start giving some general advice.


1) [ is a command. That means you probably don't want to expand a variable just next to it without separating them with white spaces.

2) If you will check against more than one option, use the case construct. Apart from giving you the chance of a better structure, you'll be able to use globbing expressions as options to match against.


That said, let's rewrite your code:

#! /bin/bash

clear
echo "orderBeds"

read -p "Please Enter your choice (Quit/Order)" order

case "$order" in
    [Oo]rder)
        read -p "Please enter your name: " name
        echo "$name placed an order."
        break
    ;;
    [Qq]uit)
        exit
    ;;
esac

Upvotes: 2

SethGoodluck
SethGoodluck

Reputation: 390

the -e flag is for numerical equivalency.

Here is a corrected bash script to get you started:

#!/bin/bash
clear

echo "orderBeds"

read -p "Please enter your choice (Quit/Order) " order

if [ $order == "order" ] || [ $order == "Order" ]
 then
  read -p  "Please enter your name " name
  echo "$name placed an order"

elif [ $order == "quit"] || [ $order == "Quit" ]
 then
  exit
fi

Note the use of == instead of -e and the separation of the or clauses.

Upvotes: 1

Related Questions