Addition in bash

Ray Parrish crp at cmc.net
Wed Oct 14 09:20:20 UTC 2009


Rakotomandimby Mihamina wrote:
> 10/14/2009 10:24 AM, Ray Parrish:
>   
>>    Seconds=$Seconds+5;  [...]
>> For some reason Seconds becomes "0+5" instead of the integer value 5
>>     
>
> - http://lists.gnu.org/mailman/listinfo/ there is some information about
> bash related mailing lists
> - http://www.google.com/search?q=bash+arithmetic has some solutions
>   
Thanks for the tips, I found a good article that explained integer math, 
and have the completed script working as shown below -

#!/usr/bin/env bash
# Usage: Timer.sh n n
# where n and n are numeric values expressed in seconds. The first n is 
the interval of how often you would like to see updates to the timer 
display.
# The second n is the duration you would like th''''''''''''''''''e 
timer to run before shutting off.
# To stop the script at any point execute a CTRL-Z in Terminal. By doing 
this you can use the Timer script as a stop watch, just set a long
# enough duration to cover the event length you are attempting to time, 
and hit CTRL-Z to stop timing when the event is over.
Minutes=0;
Seconds=0;
Elapsed=0;
Duration=$2;
Interval=$1;
# if Interval is blank (unspecified)
if [ "$Interval" == "" ]
    then
            Interval=1; # set default interval of one second is set
fi
# if Duration is blank (unspecified)
if [ "$Duration" == "" ]
    then
           Duration=300; # set default interval of 300 seconds.
fi
echo "$Interval Interval"; # echo interval setting
echo "$Duration Duration": # echo Duration setting
# While elapsed time is less than the Duration setting do loop
while [ $Elapsed -lt $Duration ]
  do
# first sleep for the interval
  sleep "$Interval";
# Increment Seconds and Elapsed by the Interval setting
  Seconds=$(( $Seconds +$Interval ));
  Elapsed=$(( $Elapsed +$Interval ));
# if Seconds equals 60
  if [ $Seconds == 60 ]
      then
              Seconds=0; # reset Seconds to zero
              Minutes=$(( $Minutes + 1)); # add one to the Minutes value
  fi
# clear the screen between each timer update
  clear
# Update the timer display to the current value
  echo "Elapsed Time: $Minutes Minutes $Seconds Seconds"
done
exit

I do not know why padsp espeak would not work from within terminal, as 
it works just fine in scripts I write within Kalarm.

Later, Ray Parris

-- 
The Future of Technology.
http://www.rayslinks.com/The%20Future%20of%20Technology.html
Ray's Links, a variety of links to usefull things, and articles by Ray.
http://www.rayslinks.com
Writings of "The" Schizophrenic, what it's like to be a schizo, and other
things, including my poetry.
http://www.writingsoftheschizophrenic.com






More information about the ubuntu-users mailing list