croten@ltpsun.gsfc.nasa.gov (Charles D. Roten) (04/19/91)
I am having trouble getting a Bourne shell to run, and have come to suspect that the problem is in the section where I parse the variables. The script is rather long (~260 lines) so I will only include the suspect portion. -------------------- script follows -------------------- #!/bin/sh [comments deleted] sourcepath=/tmp/zmcdr/tmp mailhost=charney.gsfc.nasa.gov tmpdir=/tmp/zmcdr mailback=0 interactive=0 verbose=0 built=0 dataset=0 normset=0 database=0 localdata=fort.10 localnormal=fort.15 data="" normal="" maildest="" [stuff that already works deleted] # Switch on the verbosity. set -x # Go to the 'working' directory cd $tmpdir # Now, parse the rest of the arguments, for cases where there are 1 or more # arguments. for i in $*; do case $i in -b) rm temp echo '/c idbase = 1' > temp echo 's/c/ /' >> temp sed -f temp $sourcepath/beat.f > newbeat.f mv newbeat.f beat.f database=1 built=1;; -m) mailback=1;; -d) shift datastring=$i dataset=1;; -n) shift normstring=$i normset=1;; -v) verbose=1;; -i) interactive=1;; *) if test "$data" = ""; then data=$i elif test "$normal = ""; then normal=$i elif test "$maildest" = ""; then maildest=$i else break fi esac done [stuff never reached deleted] -------------------- end of script -------------------- Here are the symptoms. -------------------- begin session log -------------------- $ jobshell zcpjd.m60.tok.data zcpjd.m60.toka.data + cd /tmp/zmcdr ./jobshell: syntax error at line 269: `end of file' unexpected $ wc -l jobshell 268 jobshell -------------------- end session log -------------------- The first command in the section I quoted after 'set -x' executes. Nothing else does. I think I hosed the syntax in the section I quoted. I am fairly sure it *is* a programming error and not just a bug in this particular port of the Bourne shell because I ran versions of this script on both a Sun and a Cray with the same results. BTW, my login shells on both machines are /bin/csh, but I was in /bin/sh when testing. I would greatly appreciate an explanation of the the nature of the goof. Thanks in advance. -- Charles Roten | STX, Incorporated Internet: croten@ltpsun.gsfc.nasa.gov [best] *OR* zmcdr@charney.gsfc.nasa.gov smail: 9701 L Philadelphia Court, Lanham, MD 20706 phone: (301) 306-1006 (work) ; (301) 317-0872 (home)
urban@cbnewsl.att.com (john.urban) (04/19/91)
In article <4973@dftsrv.gsfc.nasa.gov> croten@ltpsun.gsfc.nasa.gov (Charles D. Roten) writes: > > I am having trouble getting a Bourne shell to run, and have come to >suspect that the problem is in the section where I parse the variables. >The script is rather long (~260 lines) so I will only include the suspect >portion. > You're missing the closing " for the test "$normal >-------------------- script follows -------------------- >#!/bin/sh > > [comments deleted] > > *) if test "$data" = ""; then > data=$i > elif test "$normal = ""; then ^^^^ missing closing " around normal. > normal=$i > elif test "$maildest" = ""; then > maildest=$i > else break > fi > esac >done Sincerely, John Ben Urban
barb@library.calpoly.edu (Barbara Nash) (04/20/91)
croten@ltpsun.gsfc.nasa.gov (Charles D. Roten) says....... > > I am having trouble getting a Bourne shell to run, and have come to >suspect that the problem is in the section where I parse the variables. >The script is rather long (~260 lines) so I will only include the suspect >portion. > >-------------------- script follows -------------------- >#!/bin/sh > > [comments deleted] > [lotsa stuff deleted for brevity] > > [stuff that already works deleted] > ># Switch on the verbosity. > >set -x > ># Go to the 'working' directory >cd $tmpdir > ># Now, parse the rest of the arguments, for cases where there are 1 or more ># arguments. > >for i in $*; do > case $i in [lotsa case stuff deleted for brevity] > *) if test "$data" = ""; then > data=$i > elif test "$normal = ""; then ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ You've only got three " marks here, you need another after "$normal. This is prolly why you're getting an unexpected > > I would greatly appreciate an explanation of the the nature of the >goof. Thanks in advance. > Sure, no problem. Forgetting a quote seems to be my favorite shell proggin' error as well. =-) Good luck, Barb -- -------------------------------------------------------------------------------- Barbara Nash, Asst. SysAdmin barb@library.calpoly.edu Kennedy Library Computer Services bnash@polyslo.calpoly.edu Disclaimer: My opinions are my own, the library has enough without taking mine.
barb@library.calpoly.edu (Barbara Nash) (04/20/91)
croten@ltpsun.gsfc.nasa.gov (Charles D. Roten) says....... > > I am having trouble getting a Bourne shell to run, and have come to >suspect that the problem is in the section where I parse the variables. >The script is rather long (~260 lines) so I will only include the suspect >portion. > >-------------------- script follows -------------------- >#!/bin/sh > > [comments deleted] > [lotsa stuff deleted for brevity's sake] > ># Now, parse the rest of the arguments, for cases where there are 1 or more ># arguments. > >for i in $*; do > case $i in [lotsa case stuff deleted for more brevity] > *) if test "$data" = ""; then > data=$i > elif test "$normal = ""; then ^^^^^^^^^^^^^ You've only got three quotes here, you need another after the "$normal. This is prolly why you are getting the unexpected EOF error. > > I would greatly appreciate an explanation of the the nature of the >goof. Thanks in advance. Sure, no problem. Forgetting a quote mark seems to be my favorite shell proggin' error as well! =-) =-) Good luck, Barb -- -------------------------------------------------------------------------------- Barbara Nash, Asst. SysAdmin barb@library.calpoly.edu Kennedy Library Computer Services bnash@polyslo.calpoly.edu Disclaimer: My opinions are my own, the library has enough without taking mine.
barb@library.calpoly.edu (Barbara Nash) (04/20/91)
Sorry about my double posting there...my machine hiccupped on the first, and I didn't know if it went through... Barb -- -------------------------------------------------------------------------------- Barbara Nash, Asst. SysAdmin barb@library.calpoly.edu Kennedy Library Computer Services bnash@polyslo.calpoly.edu Disclaimer: My opinions are my own, the library has enough without taking mine.
jeff@onion.rain.com (Jeff Beadles) (04/21/91)
In croten@ltpsun.gsfc.nasa.gov (Charles D. Roten) writes: > I am having trouble getting a Bourne shell to run, and have come to >suspect that the problem is in the section where I parse the variables. >The script is rather long (~260 lines) so I will only include the suspect >portion. > ... > *) if test "$data" = ""; then > data=$i > elif test "$normal = ""; then ^^^ The problem is that you are missing a quote. This is probably one of the harder-to-find bugs with a shell script. Have fun! -Jeff -- Jeff Beadles jeff@onion.rain.com