![]() |
|
|
|
|
|||||||
| Forums | Portal | Register | Forum Rules | FAQ | Contribute | Members List | Arcade | Search | Today's Posts | Mark Forums Read |
| Shell Programming and Scripting Post questions about KSH, CSH, SH, BASH, PERL, PHP, SED, AWK and OTHER shell scripts here. |
|
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| what is wrong with this script? | rs1969 | UNIX for Dummies Questions & Answers | 2 | 11-15-2007 04:16 AM |
| what is wrong with this script? | hankooknara | Shell Programming and Scripting | 8 | 06-09-2007 09:33 AM |
| What is wrong with this script? | heprox | Shell Programming and Scripting | 8 | 11-16-2006 02:43 AM |
| what is wrong with this script? | circleW | Shell Programming and Scripting | 2 | 09-28-2004 05:27 PM |
| What is wrong with my script? | Lem2003 | UNIX for Dummies Questions & Answers | 6 | 05-28-2003 10:17 PM |
|
|
Submit Tools | LinkBack | Thread Tools | Search this Thread | Display Modes |
|
#1
|
|||
|
|||
|
What's wrong with this script
I am trying to create a script but it is giving me errors on Cygwin for the following script. Could someone tell me, what am I doing wrong?
choice=1000 echo "choice is $choice" while [ $choice -ne 0 ]; do echo "choice is $choice" echo 'Please select your option:' echo '1. Option 1' echo '2. Option 2' echo 'Enter the number:' read choice echo "choice is $choice" if [ $choice -eq 1]; then echo "You selected option 1" choice=0 elif [$choice -eq 2]; then echo "You selected option 2" choice=0 else echo "You have entered a wrong choice. Please choose from the options given" choice=1000 fi done echo "Completed." Response that I get is: choice is 1000 choice is 1000 Please select your option: 1. Option 1 2. Option 2 Enter the number: 1 choice is 1 [: missing ] [1: not found You have entered a wrong choice. Please choose from the options given choice is 1000 Please select your option: 1. Option 1 2. Option 2 Enter the number: I think it is not taking $choice as integer in the condition box, but i am not sure. |
| Forum Sponsor | ||
|
|
|
#2
|
||||
|
||||
|
U missed blanks:
Code:
[ $choice -eq 2] Code:
[ $choice -eq 2 ] |
|
#3
|
|||
|
|||
|
Hey thanks. That works. Can't believe the mistake, but that was an excellent pick on your side. Thanks once again.
|
|
#4
|
||||
|
||||
|
Suggestively, you may want to use a case statement in place of the if-elif.
This would allow for expansion if required later. And it's IMHO easier to read. That is: Code:
choice=1000
echo "choice is $choice"
while [ $choice -ne 0 ]; do
echo "choice is $choice"
echo 'Please select your option:'
echo '1. Option 1'
echo '2. Option 2'
echo 'Enter the number:'
read choice
echo "choice is $choice"
case $choice in
1) echo "You selected option 1"
choice=0 ;;
2) echo "You selected option 2"
choice=0 ;;
*) echo "You have entered a wrong choice. Please choose from the options given"
choice=1000 ;;
esac
done
echo "Completed."
Cheers, Cameron |
||||
| Google The UNIX and Linux Forums |