Syntax error near unexpected token 'else'

 
Thread Tools Search this Thread
Homework and Emergencies Homework & Coursework Questions Syntax error near unexpected token 'else'
# 1  
Old 08-18-2011
Question Syntax error near unexpected token 'else'

1. The problem statement, all variables and given/known data:

line 37: syntax error near unexpected token 'else'
line 37: ' else'

the script is made to take 1 or 2 command line arguments however i get the above stated error when trying to process it. This happens with or without arguments inputted. I looked over and over it however i cant see why the else is giving an error, i have an even amount of if - fi 's and the else is placed within the if - fi code. Im not sure what im doing wrong. Thanks in advance.

2. Relevant commands, code, scripts, algorithms:

P.S. I am using cygwin in windows to do this script.

3. The attempts at a solution (include all code and scripts):
Image

4. Insearch: (University of Technology Sydney), Sydney NSW, Australia, James Hu (web systems), www(dot)insearch.edu.au/default.aspx?ArticleID=430

Note: Without school/professor/course information, you will be banned if you post here! You must complete the entire template (not just parts of it).

Last edited by Ren_kun; 08-18-2011 at 04:58 AM..
# 2  
Old 08-18-2011
Do you mind posting that code with marking, copy&paste instead? When doing so use code tags, thanks. The indention is ugly to non-existent Smilie
# 3  
Old 08-18-2011
Sorry zaxxon but could you lead me somewhere or tell me how specifically? I wasnt aware i could copy and paste in an unix environment.
# 4  
Old 08-18-2011
That window looks like a Windows command window. You should be able to right click on the title bar and select setting for editing etc. (only got the German version here sorry). Hopefully you should be able to mark the code with the mouse and press ctrl+c or middle mouse button or whatever (not sure). Best try it out.
This User Gave Thanks to zaxxon For This Post:
# 5  
Old 08-18-2011
Code:
#! /bin/sh
choice=0
while [ $choice -ne 4 ]; do
clear
echo "        Menu"
echo "1.Username|Directory|Shell|Calender"
echo "2.Arithmetic Operation"
echo "3.Find the first letter"
echo "4.exit-Please confirm"
echo "Please enter a choice from 1 to 4 only"

read choice
case $choice in
"1")
if [ $# -eq 1 -o $# -eq 2 ]; then
 if [ -d $1 ]; then
echo Your user name is $USER
echo Your Home directory is $HOME
echo Your Default shell is $SHELL
echo Press anykey to see the 2011 calender
read a
cal 2011
echo Press anykey to see long listing of $1
read a
ls -rR $1
  if [ $# -eq 2 ]; then
   if [ -f $2 ]; then
echo "Your name is $USER" >> $2
echo "Your Home directory is $HOME" >> $2
echo "Your Default shell is $SHELL" >> $2
cal 2011 >> $2
ls -rR $1 >> $2
   else
echo The second arguement must be a valid file
   fi
  fi
 else
echo The directory is invalid
 fi
else
echo Please include 1 or 2 arguments in the command
echo Example : ./Assignment4.SH directory file-name
fi
;;


"2");;
"3");;
"4");;
*) echo "Sorry,Invalid choice";;
esac
if [ $choice -ne 4 ]; then
echo "Press Enter to continue"
read a
fi
done
exit

i found the problems to be missing a then within the errroed else and spaces after the code within the [] for the ifs. Is there anything else you can see wrong with code? And thanks for the tip i was told by my lecturer that we couldnt C&P in unix.
# 6  
Old 08-18-2011
This is not Unix/Linux. cygwin is a Linux like environment for Windows. Windows is in this case managing your windows. Cygwin is just being started in a cmd box of Windows so Windows applies^^. So you can lecture your lecturer Smilie Smilie (just kidding)

I do not see errors in quick glimpse. Do you still get error messages? I recommend that you modify your code indention in the future as it makes reading the logical structure of loops, and control statements like if/then/else/fi or case/esac etc. much easier. Maybe indent them by a whole tab or at least by 4 blanks.
This User Gave Thanks to zaxxon For This Post:
# 7  
Old 08-18-2011
On testing there seems to be no more errors. Thanks for your help thus far zaxxon. Ill do the indentation properly now too. If i come across anymore errors i cant figure out straight away ill post back on this thread.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Ubuntu

Syntax error near unexpected token `('

detect_mouse_mvt.sh /home/andy/bin/detect_mouse_mvt.sh: line 4: syntax error near unexpected token `(' /home/andy/bin/detect_mouse_mvt.sh: line 4: `fh = file('/dev/input/mice')' #!/bin/bash # # fh = file('/dev/input/mice') while True: fh.read(3) print 'Mouse... (15 Replies)
Discussion started by: drew77
15 Replies

2. UNIX for Beginners Questions & Answers

Syntax error near unexpected token

Dears, While executing the below script im getting the error at line 30. Please let me know what changes to be done to fix this. test.sh: line 30: syntax error near unexpected token `done' test.sh: line 30: ` done ' #!/bin/sh # Rev. PA1 # author: eillops # date: 26-04-2018 # #... (1 Reply)
Discussion started by: Kamesh G
1 Replies

3. How to Post in the The UNIX and Linux Forums

Syntax error near unexpected token `('

I have 2 files like a.txt and b.txt and the content is as below cat a.txt 810750125 117780 /BSCSQAT4A/bscsqat4a/lib/jar/wclt_common.jar 1803152428 13300 /BSCSQAT4A/bscsqat4a/lib/jar/WFMSSupportTool.jar 2663502779 67049 /BSCSQAT4A/bscsqat4a/lib/jar/wma.jar 687942896 665272... (1 Reply)
Discussion started by: ranabhavish
1 Replies

4. Shell Programming and Scripting

Syntax error near unexpected token

Hi all, I have a simple script that doesn't work somehow. I can't seem to be spotting the cause of the malfunction. count=$((1)) for item in `cat test1.txt` printf %s `sed -n $((count))p test2.txt` > test3.txt count=$((count+1)) do something done I get ; ./why.sh: line 3:... (14 Replies)
Discussion started by: y33t
14 Replies

5. Shell Programming and Scripting

Syntax error near unexpected token '('

I tried to execute the code but I got this error ./Array.c: line 9: syntax error near unexpected token '(' ./Array.c: line 9: ' nvals = get_data(a,MAXARRAY);' and #include<stdio.h> #define MAXARRAY 1000 main() { int a, nvals; nvals =... (7 Replies)
Discussion started by: sgradywhite
7 Replies

6. Shell Programming and Scripting

Syntax error near unexpected token `else'

Hi, I am trying to read the session log through script. But it keeps showing me some error near. I have tried everything. Even tried converting the script using sed command to remove the hidden characters(\r).But nothing seems to be working.Below is the script : #!/bin/bash cd... (6 Replies)
Discussion started by: Aryan12345
6 Replies

7. Shell Programming and Scripting

Syntax error near unexpected token `('

What do I do here? #!/bin/bash payload=-1 AND 1=IF(21,BENCHMARK(5000000,MD5(CHAR(115,113,108,109,97,112))),0)# hash=`echo -n $payload md5sum tr -d 'n' sed 'ss-sg' md5sum tr -d 'n' sed 'ss-sg'` curl --data cs2=chronopay&cs1=$payload&cs3=$hash&transaction_type=rebill... (2 Replies)
Discussion started by: iiiiiiiiiii
2 Replies

8. Shell Programming and Scripting

syntax error near unexpected token `='

Hi all, This is a script which converts hex to bin. However am finding an error while executing syntax error near unexpected token `=' `($hexfile, $binfile) = @ARGV;' I am running using ./fil.pl <hexfile> <binfile> ################################################### # # this script... (3 Replies)
Discussion started by: jaango123
3 Replies

9. UNIX for Advanced & Expert Users

syntax error near unexpected token '{

Hi, I am running the following script through cygwin and getting below mentioned error. ******************************************* #!/bin/sh # constants WORK_DIR="deploy" INFOFILE="deploy.info" INTROFILE="Intro.sh" CMGMT_PKG="com.kintana.cmgmt.deploy" DEPLOY_PREFIX="mitg" ... (2 Replies)
Discussion started by: MandyR
2 Replies

10. Shell Programming and Scripting

sh syntax error unexpected token done

I'm getting the following error: line 21: syntax error near unexpected token `done` line 21: `done` and I haven't been able to figure out why. Here is my code #!/bin/sh if ; then echo 'Usage: rename getexp/replStr ' exit 0 fi arg = $1 shift while ; do (5 Replies)
Discussion started by: NullPointer
5 Replies
Login or Register to Ask a Question