please help really need


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting please help really need
# 1  
Old 09-01-2010
please help really need

Must be organized to function as one-dimensional array, leaving in place the zero elements.Smilie have the code but it gives an error...
Code:
PATH=./
echo -n "Enter dimension of a array:"
read n
read enter
a=0
while [ $a -lt $n ]
    do
        a=$[a+1]
        read m$a
        read enter
    done
a=0
while [ $a -lt $n ]
    do
        a=$[a+1]
        echo -n [m$a]""
    done
i=1
k=0
while [ $i -lt $n ]
    do
       eval j=$n
       k=0
    while [ $j -gt $i ]
    do
             if [ $[m$j] -eq 0 -a $k -eq 0 ]
         then
            :
         else
       if [ $[m$[j-1]] -eq 0 ]
            then 
             k=$[k+1]
            else
       if [ $[m$[j-1]] -gt $[m$[j+k]] ]
          then
           eval temp=$[m$[j+k]]
           eval m$[j+k]=$[m$[j-1]]
           eval m$[j-1]=$temp
         fi
         k=0
       fi
      fi

       j=$[j-1]
    done
    i=$[i+1]
done
echo ---------------------------
y=0
while [ $y -lt $n ]
    do
        y=$[y+1]
        echo -n $[m$y]" " 
    done

# 2  
Old 09-01-2010
That seems me a complicated code. What's the purpose?
# 3  
Old 09-01-2010
Quote:
Originally Posted by forgetmenot
Must be organized to function as one-dimensional array, leaving in place the zero elements.Smilie have the code but it gives an error...
For one thing: It seems like homework; for another where did you get the code; and other: what is the error?; and finally... why "must it..."?

Last edited by Scott; 09-01-2010 at 06:18 PM..
# 4  
Old 09-01-2010
Agreed. There are too many scripting errors to work out what the script is meant to do.

For example:
Line 1 should be deleted. Overwriting $PATH will stop external commands working.
Line 4 should be deleted. (The "read" on line 3 already read the enter).

This sequence of lines makes no sense and gives syntax errors:
Quote:
while [ $a -lt $n ]
do
a=$[a+1]
read m$a
read enter
done
# 5  
Old 09-01-2010
I would delete the following lines:

Code:
sed '1,$d' forgetmyscript

If line 1 used a #! ... we'd know the language (presently it's pseudo code).

A ksh syntax check shows:

Code:
$ ksh -n forgetmyscript 
forgetmyscript: warning: line 8: $ not preceeded by \
forgetmyscript: warning: line 15: $ not preceeded by \
forgetmyscript: warning: line 26: $ not preceeded by \
forgetmyscript: warning: line 30: $ not preceeded by \
forgetmyscript: warning: line 30: $ not preceeded by \
forgetmyscript: warning: line 32: $ not preceeded by \
forgetmyscript: warning: line 34: $ not preceeded by \
forgetmyscript: warning: line 34: $ not preceeded by \
forgetmyscript: warning: line 34: $ not preceeded by \
forgetmyscript: warning: line 34: $ not preceeded by \
forgetmyscript: warning: line 36: $ not preceeded by \
forgetmyscript: warning: line 36: $ not preceeded by \
forgetmyscript: warning: line 37: $ not preceeded by \
forgetmyscript: warning: line 37: $ not preceeded by \
forgetmyscript: warning: line 37: $ not preceeded by \
forgetmyscript: warning: line 38: $ not preceeded by \
forgetmyscript: warning: line 44: $ not preceeded by \
forgetmyscript: warning: line 46: $ not preceeded by \
forgetmyscript: warning: line 52: $ not preceeded by \
forgetmyscript: warning: line 53: $ not preceeded by \

(fix this to see the next batch...)
# 6  
Old 09-01-2010
I think that scottn has hit the nail on the head.

Lines like this make no sense.
Code:
       a=$[a+1]

And for that matter any of the lines posted which contains square brackets.
There may be more.
# 7  
Old 09-01-2010
just a suggestion on indentation. I find your script very hard to follow because of the indentation. I generally use three spaces at each level.

for example

change
Code:
while [ $a -lt $n ]
    do
        a=$[a+1]
        read m$a
        read enter
    done

to
Code:
while [ $a -lt $n ]
do
   a=$[a+1]
   read m$a
   read enter
done

Login or Register to Ask a Question

Previous Thread | Next Thread
Login or Register to Ask a Question