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
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
Ygor
4
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.