Sponsored Content
Full Discussion: nested read
Top Forums Shell Programming and Scripting nested read Post 48402 by TioTony on Friday 5th of March 2004 01:18:00 PM
Old 03-05-2004
nested read

I am hoping someone can help me with this one.

I am writing a ksh script on Solaris. I want to read in host names and some other info from a file, do an "rsh host 'shutdown'" (or any uname for now until I get it working), and then be given some options. The problem is I am using while read LINE do with a nested read like this:


Code:
cat hosts.lst | while read LINE
do
   set ${LINE}
   rsh ${1} 'uname -a'
   DONE=false
   while [[ ${DONE} = false ]]
   do
      echo "[C]heck, [K]ill, [G]o?"
      read ANSWER
      ANSWER=`echo ${ANSWER} | tr -s '[:lower:]' '[:upper:]'`
      echo "ANSWER is ${ANSWER}"
      case ${ANSWER} in
         C ) check_running_processes;;
         K ) kill_running_processes;;
         G ) DONE=true;; #go to next priority
       esac
   done

This isn't the entire script just the section I am having problems with. The problem I cannot get around is when I try to "read ANSWER", $ANSWER is getting the value of $LINE for that iteration. I understand why this is happening but cannot figure out how to get around it.

I have tried putting the read in (), in a separate subroutine, unsetting $LINE, setting $LINE to something else.

Any other ideas?

Thanks,
Tony
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Nested while read line loop

Hi, Can anyone please help me: i'm trying to read a file with directory-names , then go to that directory and read another (output) file to perform some tasks per line (second read line in the part of script below). The problem is that after the nested while loop has finished, the first while... (7 Replies)
Discussion started by: Rakker
7 Replies

2. Shell Programming and Scripting

Nested Symlinks?

Please don't laugh or call me a fool... I'm trying to set up a script that will go through my Music File directory and generate a set of symbolic links in a directory called "What's New". Within that directory there will be a "30 Days", "3 Months", "6 Months" and "A Year" directories. Within... (0 Replies)
Discussion started by: deckard
0 Replies

3. Shell Programming and Scripting

while read loop w/ a nested if statement - doesn't treat each entry individually

Hi - Trying to take a list of ldap suffixes in a file, run an ldapsearch command on them, then run a grep command to see if it's a match, if not, then flag that and send an email alert. The list file (ldaplist) would look like - *********** o=company a o=company b *********** **... (7 Replies)
Discussion started by: littlefrog
7 Replies

4. Shell Programming and Scripting

nested for loops

I need help getting over this bump on how nested for loops work in shell. Say i was comparing files in a directory in any other language my for loop would look like so for(int i=0;to then end; i++) for(int y = i+1; to the end; y++) I can't seem to understand how i can translate that... (5 Replies)
Discussion started by: taiL
5 Replies

5. UNIX for Dummies Questions & Answers

Nested If statement within Do / Done

Hi all! I'm really hoping you can help me out here; now i have searched and searched and have at least worked out that you can't have a nested if statement with a 'done' in it (as i have) as you're killing the parent before the child. So here's what i have, and here's hoping someone can help... (2 Replies)
Discussion started by: dalgibbard
2 Replies

6. UNIX for Dummies Questions & Answers

Faster than nested while read loops?

Hi experts, I just want to know if there is a better solution to my nested while read loops below: while read line; do while read line2; do while read line3; do echo "$line $line2 $line3" done < file3.txt done < file2.txt done < file1.txt >... (4 Replies)
Discussion started by: chstr_14
4 Replies

7. Shell Programming and Scripting

Optimize the nested IF

Hi, I have to assign a value for a varaiable based on a Input. I have written the below code: if then nf=65 elif then nf=46 elif then nf=164 elif then nf=545 elif then nf=56 elif then (3 Replies)
Discussion started by: machomaddy
3 Replies

8. Shell Programming and Scripting

Nested ifs

hi I keep getting an error with this nested if statement and am getting the error unexpected end of file, can anyone help me as to why this wont execute? #!/bin/bash #script to check wether the -i -v statements run correctly removeFile () { mv $1 $HOME/deleted }... (3 Replies)
Discussion started by: somersetdan
3 Replies

9. Shell Programming and Scripting

Nested if else

Hi, i m trying to create script which logic is like below. if ; then x=`cat /tmp/testoutput.log | grep STOP | wc -l` y=`cat /tmp/testoutput.log | grep RUN | wc -l` if ; then echo "process stop" if ; then echo "process running " else echo "file not found" fi ----------------... (2 Replies)
Discussion started by: tapia
2 Replies

10. UNIX for Dummies Questions & Answers

[Solved] Nested If

I am having a problem with a nested if. I am sure I am overlooking something. I check for the existence of $Pidfl3 and it exists, o this condition I then want to check for the existence of a next file and remove it. The first if is executed, but on the second if I get test: argument expected. My... (4 Replies)
Discussion started by: Charles Swart
4 Replies
RSH(1)							    BSD General Commands Manual 						    RSH(1)

NAME
rsh -- remote shell SYNOPSIS
rsh [-46dn] [-l username] [-p port] host [command] rsh [-46dn] [-p port] username@host [command] DESCRIPTION
rsh executes command on host. rsh copies its standard input to the remote command, the standard output of the remote command to its standard output, and the standard error of the remote command to its standard error. Interrupt, quit and terminate signals are propagated to the remote command; rsh normally termi- nates when the remote command does. The options are as follows: -4 Use IPv4 addresses only. -6 Use IPv6 addresses only. -d The -d option turns on socket debugging (using setsockopt(2)) on the TCP sockets used for communication with the remote host. -l username By default, the remote username is the same as the local username. The -l option or the username@host format allow the remote name to be specified. -n The -n option redirects input from the special device /dev/null (see the BUGS section of this manual page). -p port Uses the given port instead of the one assigned to the service ``shell''. May be given either as symbolic name or as number. If no command is given, note that rlogin(1) is started, which may need a different daemon (rlogind(8) instead of rshd(8)) run- ning on the server; you want to pass the rshd(8) port number in that case. If no command is specified, you will be logged in on the remote host using rlogin(1). Shell metacharacters which are not quoted are interpreted on local machine, while quoted metacharacters are interpreted on the remote machine. For example, the command rsh otherhost cat remotefile >> localfile appends the remote file remotefile to the local file localfile, while rsh otherhost cat remotefile ">>" other_remotefile appends remotefile to other_remotefile. FILES
/etc/hosts SEE ALSO
rcmd(1), rlogin(1), rcmd(3), hosts.equiv(5), rhosts(5), environ(7) HISTORY
The rsh command appeared in 4.2BSD. BUGS
If you are using csh(1) and put a rsh in the background without redirecting its input away from the terminal, it will block even if no reads are posted by the remote command. If no input is desired you should redirect the input of rsh to /dev/null using the -n option. You cannot run an interactive command (like rogue(6) or vi(1)) using rsh; use rlogin(1) instead. Stop signals stop the local rsh process only; this is arguably wrong, but currently hard to fix for reasons too complicated to explain here. BSD
March 9, 2005 BSD
All times are GMT -4. The time now is 05:26 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy