csh exit while loop on keystroke


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting csh exit while loop on keystroke
# 1  
Old 12-17-2004
csh exit while loop on keystroke

#!/bin/csh

I'm using a `while(1)` loop to dispaly real-time information about various files on my system, and I use ^C to exit it when needed. I was hoping there was a way to exit the script on a normal keystroke such as "q". Can someone point me in the right direction? I'm willing to use a different method for looping if needed.

Thanks,
-Seg
# 2  
Old 12-17-2004
i do some thing like this ....


while true
do

echo "input string:\c"
read a;

echo $a

if [ $a = "q" ]
then
break ;
fi


done
# 3  
Old 12-23-2004
That's not really what I'm trying to do, besides that code is for sh, not csh. Anyway, I'm running a loop where there is no prompt for user input, the script clears the screen, displays info, sleeps for 1 second then starts over. I'd like to break out of the loop at any time using a standard key stroke rather than ^C.
# 4  
Old 12-23-2004
Use a signal and have your script listen for the signal. The syntax depends on the shell you are using. If you are using ksh, see man ksh. Also search the boards as there are many examples of using signals.

trap "command to run when signal trapped" "list of signals"

trap "" signals # Will trap the signals you define but not allow them to affect your script.

you can get a list of signals by typing kill -l on the command line. Note: You cannot trap signal 9. Your "command to run" can be a function if you so choose.

Code:
User Commands                                             trap(1)

NAME
     trap, onintr  -  shell  built-in  functions  to  respond  to
     (hardware) signals

SYNOPSIS
  sh
     trap [  argument  n  [ n2 ... ]  ]

  csh
     onintr [ -| label ]

  ksh
     *trap [  arg sig  [  sig2 ...  ]  ]

# 5  
Old 12-28-2004
Thanks for the information. In all fairness I've gone ahead and moved this project to C++ because it is beyond the scope of shell scripting.
# 6  
Old 12-28-2004
Switching to C is wise, but you could just write a quick utility that sleeps for 1 second unless a key is pressed and returned an appropiate exit code. Then the rest of the project could be in a shell script.
# 7  
Old 12-29-2004
That is true, but moving to C++ will allow me much more versatility in the program. As my managers would say "moving forward" I will need to add many more functions to it and being just minimally realistic about it, it's going to need to be in something more capable and secure than a 20 line shell script.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

Foreach loop through subdirectories in csh

Hi You might find it very trivial but actually don't know how to loop through all sub-directories and their child directories into a csh. bash was easier I believe but here I am, stuck with csh. So elaborately here's my problem: Let's say I have my parent directory named C-H/ under which I have... (15 Replies)
Discussion started by: saleheen
15 Replies

2. Shell Programming and Scripting

CSH While Loop

Hi all, How can I make this work with CSH: set K=3 set I=1 while ($I != $K) echo "K="$I @ I = $K + 1 end Any help you can provide or links that can help is greatly appreciated. With above I get an error "while: Expression Syntax" (3 Replies)
Discussion started by: manglalayag
3 Replies

3. UNIX for Dummies Questions & Answers

foreach loop in csh

Hi everyone I'm new to unix and encountered a small problem i couldnt find out a reason why it doesn't work..please help.. in my csh script when i tried to use the foreach loop like this: foreach x ( ls ) echo $x end when i tried to run it, it printed out 'ls' to the std out instead of... (3 Replies)
Discussion started by: ymc1g11
3 Replies

4. Emergency UNIX and Linux Support

For loop exit

Below for loop not exiting. Can someone help? JBOSS_INST_ARGS=01 02 if ; then for i in $JBOSS_INST_ARGS; do /u/jboss-6.1.0.Final/bin/jboss_init_wise$i.sh start; done (8 Replies)
Discussion started by: vino_hymi
8 Replies

5. Shell Programming and Scripting

Creating a loop in csh

I have the following code and want to use a loop to output the results to the fparams file. if ($optparams == 1) then # Set the tdarwin parameters set txt01 = "Call to raytrac.csh" set txt02 = "" set txt03 = "./Scripts/raytrac.csh $*" set txt04 = "" set txt05 =... (0 Replies)
Discussion started by: kristinu
0 Replies

6. Shell Programming and Scripting

How to loop use while loop in csh script?

Hi all, i got 2 text file. file.txt value.txt i want use C shell script to write out while both of the file got different limit....how i going to write it in 1 while loop? (4 Replies)
Discussion started by: proghack
4 Replies

7. Shell Programming and Scripting

Exit from loop

hi, how to exit from "if" loop?actually i have mutliple "if" conditions, i have to exit from each "if" loop,if it is true...:confused: Please suggest me... (3 Replies)
Discussion started by: sreelu
3 Replies

8. UNIX for Dummies Questions & Answers

For loop control with two variables in csh shell

Hi All How can i control for loop with two different variables in csh shell Regards Nikhil (1 Reply)
Discussion started by: Nikhilindurkar
1 Replies

9. UNIX for Dummies Questions & Answers

a simple loop in csh

Hello, I have a file with over 48000 lines and I need to select certain parts of the file. I know which awk commands work for what I need, I just need some help putting together a loop that will repeat the command. These are the commands that work: awk 'NR < 6' plot.out > plot.test (I get... (1 Reply)
Discussion started by: dsstamps
1 Replies

10. Shell Programming and Scripting

while loop exit

i wrote a while script as part of a huge program. this script, once picked, begins to output data to the person using it. pretty easy, as the person doesn't have to keep typing commands to get the output that the while loop automatically throws out. now, the thing is, while this while-script... (3 Replies)
Discussion started by: Terrible
3 Replies
Login or Register to Ask a Question