Script working in AIX, but giving error in SOLARIS

Hi,
My script is working fine in AIX but throwing an error in SOLARIS system.

Here is the error message that I am getting when calculating the elapsed time:
/home/x772525/FindETA.sh[106]: start_mins = *60 + : syntax error

.
((start_mins = $(expr substr "$j" 1 2)*60 + $(expr substr "$j" 4 2)))

Please let me know if there is any problemm with the line.

Thanks
Ajay

Perhaps $j is not set?

for j in `cat starttime.txt`
        do
                
                for k in `cat endtime.txt`
                do
                        
                        num=$(expr substr "$k" 1 2)
                       
                        ((start_mins = $(expr substr "$j" 1 2)*60 + $(expr substr "$j" 4 2)))
                        ((end_mins = $(expr substr "$k" 1 2)*60 + $(expr substr "$k" 4 2)))
                        ((elapsed_mins = end_mins - start_mins))

This is the code that I am using. Same thing if I copy paste in AIX, it is working, but in SOLARIS it is throwing that error.

---------- Post updated at 12:56 AM ---------- Previous update was at 12:39 AM ----------

[bpdps009] x772525 /home/x772525> cat starttime.txt
20:03:12
[bpdps009] x772525 /home/x772525> cat endtime.txt
20:04:57
[bpdps009] x772525 /home/x772525> cat > test.sh
#!/bin/ksh
for j in `cat starttime.txt`
        do
                
                for k in `cat endtime.txt`
                do
                        
                        num=$(expr substr "$k" 1 2)
                       
                        ((start_mins = $(expr substr "$j" 1 2)*60 + $(expr substr "$j" 4 2)))
                        ((end_mins = $(expr substr "$k" 1 2)*60 + $(expr substr "$k" 4 2)))
                        ((elapsed_mins = end_mins - start_mins))
echo "$elapsed_mins"
done
done
 

Output:

[bpdps009] x772525 /home/x772525> test.sh
expr: syntax error
expr: syntax error
expr: syntax error
/home/x772525/test.sh[10]: start_mins = *60 + : syntax error

---------- Post updated at 08:37 PM ---------- Previous update was at 12:56 AM ----------

It looks to be a problem with expr syntax. Can someone pls help me solve this?

Thanks
Ajay

Try putting set -x in the start of the script. And post the results.

I'm confused because I only get a syntax error from expr if I omit the quotes...

$ set -x

$ x=""
+ x=

$ expr substr "$x" 1 2
+ expr substr '' 1 2


$ expr substr $x 1 2
+ expr substr 1 2
expr: syntax error

$

...where $ is the bash prompt.

[bpdps009] x772525 /home/x772525> cat > test.sh
#!/bin/ksh
set -x
read stime < starttime.txt
      
                
                read etime < endtime.txt
              
                        ((start_mins = $(expr substr "$stime" 1 2)*60 + $(expr substr "$stime" 4 2)))
                        ((end_mins = $(expr substr "$etime" 1 2)*60 + $(expr substr "$etime" 4 2)))
                        ((elapsed_mins = end_mins - start_mins))
echo "$elapsed_mins"

Here is the output:

[bpdps009] x772525 /home/x772525> test.sh
+ read stime
+ 0< starttime.txt
+ read etime
+ 0< endtime.txt
+ expr substr 20:03:12 1 2
expr: syntax error
+ expr substr 20:03:12 4 2
expr: syntax error
+ (( start_mins = *60 +  ))
/home/x772525/test.sh[9]: start_mins = *60 + : syntax error

Perhaps it's the Solaris expr, does expr substr "AB:CD" 1 2 work from the command line?

You could replace the expr call with something like echo $stime | cut -f1 -d:

Yes, that command is not working on command line also. .
I used that cut option and it is now working fine.

Thank you.