11-29-2001
shell script - loop to countdown
I am taking a class in UNIX and have written a script that needs to countdown from a number that is read in from the keyboard to zero. If no number is given the start of the countdown should default to 10.
I can't get this to do the default
#! /bin/sh
echo Enter a number here to countdown from a number to 0
read x
if [ -n $x ]; then
count=$x
else
count=10
fi
while [ $count -ge 0 ]
do
echo $count seconds
count=`expr $count - 1`
done
echo Off we go!
Does anyone know what I am doing wrong?
10 More Discussions You Might Find Interesting
1. Shell Programming and Scripting
Hi
Following is the code . When I give input as Bangalore,its dospalying Welcome to Hitech City. But say , if I select Delhi or US, its not displaying the corresponding message. Its still says Welcome to Hitech City.
Seems that it not entering in the elif part. Please suggest.
#!... (4 Replies)
Discussion started by: pankajkrmishra
4 Replies
2. Shell Programming and Scripting
I am looking for a way to display on a single line, a running countdown for a given amount of time in a terminal using a bash script.
I am looking for this to use as part of a larger bash script that captures Video. The script sets up a bunch of parameters for DVgrab, and one of the parameters... (11 Replies)
Discussion started by: Starcast
11 Replies
3. Shell Programming and Scripting
I just want to write a little script, that reads the lines from a file, echos somthing in a new tmp.file and then do some commands whith the tmp.files.
while read -r line
do
echo "TEST=" > tmp.$$
echo "$line" >> tmp.$$
any_command < tmp.$$
done < $INPUTFILE
But I think I have to... (2 Replies)
Discussion started by: elifchen
2 Replies
4. Shell Programming and Scripting
Hi guys, I've found two nifty little scripts on these forums one which detects if the F5 key has been pressed:
#/bin/sh
_key()
{
local kp
ESC=$'\e'
_KEY=
read -d '' -sn1 _KEY
case $_KEY in
"$ESC")
while read -d '' -sn1 -t1 kp
do
_KEY=$_KEY$kp
... (0 Replies)
Discussion started by: rich@ardz
0 Replies
5. Shell Programming and Scripting
Hi everyone,
I have n number of data in my file "temp" in following order.In each line table_name and
column_name are different.input data is in same format each query in three lines.
ALTER TABLE table_name
ADD ( column_name1 VARCHAR2(10),
column_name2 VARCHAR2(70) );
... (23 Replies)
Discussion started by: alisha
23 Replies
6. UNIX for Dummies Questions & Answers
Hey - I need to write a shell script that gives a message on Fridays and a countdown on other business days. ("Today is Thursday, one day to go to Friday") I don't know if I should be scheduling a job for friday using the crontab command? Basically i'm totally lost. Any help would be greatly... (6 Replies)
Discussion started by: citizencro
6 Replies
7. Shell Programming and Scripting
Hi all,
Does anyone know of any FUN countdown script that I can use for my script? At the moment, am just using sleep 10 or more and then print stuff into the screen to allow more time for the user to decide whether they want to continue running the script or abort?
Just thought of wanting... (3 Replies)
Discussion started by: newbie_01
3 Replies
8. Shell Programming and Scripting
Hi,
I have multiple files in a directory. Each file will have a header.I have to check if any of the files has 0 rows other than the header then I have to delete the files.
Here “ Empty file” in my case means a file has header information but no data. I have to delete such files.
If the file... (2 Replies)
Discussion started by: ganesnar
2 Replies
9. Shell Programming and Scripting
Hi Friends, I have a file. the content is as below:
file1:
/A/B/C/abc.txt
2013-07-28 13:50:00,2013-07-31 01:00:00,5,710
/A/B/C/xyz.txt
2011-09-21 18:30:00,2013-07-30 06:15:00,15,65135
2009-11-09 18:00:00,2011-09-02 09:00:00,5,12345
2013-07-28 13:50:00,2013-07-31 01:00:00,5,710
... (2 Replies)
Discussion started by: vsachan
2 Replies
10. Shell Programming and Scripting
In the below bash when the perl is it possible to hide the commands from running on screen and display a process countdown?
For example, on the cygwin screen now the user sees each process in the command running as running protocol refGene, running protocol popfreq_all, etc... Could a... (0 Replies)
Discussion started by: cmccabe
0 Replies
LEARN ABOUT DEBIAN
io::async::timer::countdown
IO::Async::Timer::Countdown(3pm) User Contributed Perl Documentation IO::Async::Timer::Countdown(3pm)
NAME
"IO::Async::Timer::Countdown" - event callback after a fixed delay
SYNOPSIS
use IO::Async::Timer::Countdown;
use IO::Async::Loop;
my $loop = IO::Async::Loop->new;
my $timer = IO::Async::Timer::Countdown->new(
delay => 10,
on_expire => sub {
print "Sorry, your time's up
";
$loop->stop;
},
);
$timer->start;
$loop->add( $timer );
$loop->run;
DESCRIPTION
This subclass of IO::Async::Timer implements one-shot fixed delays. The object implements a countdown timer, which invokes its callback
after the given period from when it was started. After it has expired the Timer may be started again, when it will wait the same period
then invoke the callback again. A timer that is currently running may be stopped or reset.
For a "Timer" object that repeatedly runs a callback at regular intervals, see instead IO::Async::Timer::Periodic. For a "Timer" that
invokes its callback at a fixed time in the future, see IO::Async::Timer::Absolute.
EVENTS
The following events are invoked, either using subclass methods or CODE references in parameters:
on_expire
Invoked when the timer expires.
PARAMETERS
The following named parameters may be passed to "new" or "configure":
on_expire => CODE
CODE reference for the "on_expire" event.
delay => NUM
The delay in seconds after starting the timer until it expires. Cannot be changed if the timer is running. A timer with a zero
delay expires "immediately".
remove_on_expire => BOOL
Optional. If true, remove this timer object from its parent notifier or containing loop when it expires. Defaults to false.
Once constructed, the timer object will need to be added to the "Loop" before it will work. It will also need to be started by the "start"
method.
METHODS
$expired = $timer->is_expired
Returns true if the Timer has already expired.
$timer->reset
If the timer is running, restart the countdown period from now. If the timer is not running, this method has no effect.
EXAMPLES
Watchdog Timer
Because the "reset" method restarts a running countdown timer back to its full period, it can be used to implement a watchdog timer. This
is a timer which will not expire provided the method is called at least as often as it is configured. If the method fails to be called, the
timer will eventually expire and run its callback.
For example, to expire an accepted connection after 30 seconds of inactivity:
...
on_accept => sub {
my ( $newclient ) = @_;
my $watchdog = IO::Async::Timer::Countdown->new(
delay => 30,
on_expire => sub {
my $self = shift;
my $stream = $self->parent;
$stream->close;
},
);
my $stream = IO::Async::Stream->new(
handle => $newclient,
on_read => sub {
my ( $self, $buffref, $eof ) = @_;
$watchdog->reset;
...
},
on_closed => sub {
$watchdog->stop;
},
) );
$stream->add_child( $watchdog );
$watchdog->start;
$loop->add( $watchdog );
}
Rather than setting up a lexical variable to store the Stream so that the Timer's "on_expire" closure can call "close" on it, the
parent/child relationship between the two Notifier objects is used. At the time the Timer "on_expire" closure is invoked, it will have been
added as a child notifier of the Stream; this means the Timer's "parent" method will return the Stream Notifier. This enables it to call
"close" without needing to capture a lexical variable, which would create a cyclic reference.
Fixed-Delay Repeating Timer
The "on_expire" event fires a fixed delay after the "start" method has begun the countdown. The "start" method can be invoked again at some
point during the "on_expire" handling code, to create a timer that invokes its code regularly a fixed delay after the previous invocation
has finished. This creates an arrangement similar to an IO::Async::Timer::Periodic, except that it will wait until the previous invocation
has indicated it is finished, before starting the countdown for the next call.
my $timer = IO::Async::Timer::Countdown->new(
delay => 60,
on_expire => sub {
my $self = shift;
start_some_operation(
on_complete => sub { $self->start },
);
},
);
$timer->start;
$loop->add( $timer );
This example invokes the "start_some_operation" function 60 seconds after the previous iteration has indicated it has finished.
AUTHOR
Paul Evans <leonerd@leonerd.org.uk>
perl v5.14.2 2012-10-24 IO::Async::Timer::Countdown(3pm)