Why doesnt if inside a while loop work ?


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Why doesnt if inside a while loop work ?
# 1  
Old 01-15-2013
Why doesnt if inside a while loop work ?

I am looping through a file in bash and performing some operations on it. Here is the code.

cat test.dat -

One
Two
Three

Case 1: With if inside while loop

Quote:
#!/bin/bash


cat ~/tmp/test.dat | while read line
do
echo $line

if ssh tempuser@host5592 "test -e '/home/tempuser/tmp/test.dat'"; then
echo "file found :) "
fi

done
Output:
One
file found :)

------------------

isn't it supposed to print following output !!!
one
file found :)
two
file found :)
three
file found :)
four
file found :)

Case 2: I comment if condition inside loop

Quote:
#!/bin/bash


cat ~/tmp/test.dat | while read line
do
echo $line

# if ssh tempuser@host5592 "test -e '/home/tempuser/tmp/test.dat'"; then
# echo "file found :) "
# fi

done
Output:

one
two
three
four


Can come one explain why is this happening ? Why is if breaking the loop.

-Steve

Last edited by Scott; 01-15-2013 at 01:34 PM.. Reason: Code tags and formatting
# 2  
Old 01-15-2013
Add the -n option to the ssh command:

Code:
#!/bin/bash


 cat ~/tmp/test.dat | while read line
 do
 echo $line

 if ssh -n tempuser@host5592 "test -e '/home/tempuser/tmp/test.dat'"; then
 echo "file found :) "
 fi

 done

This User Gave Thanks to in2nix4life For This Post:
# 3  
Old 01-15-2013
Thanks a ton. That worked. Can you tell me what caused the issue.
# 4  
Old 01-15-2013
Piping into a while loop in such a way reads from STDIN. When you ssh to a server it takes over STDIN. The -n switch to the ssh command prevents it from taking over STDIN.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Programming

Creating for loop for tar -tvf doesnt work

hi all, i have created a for loop, it looks like this - #!/bin/bash cd /mnt/local/data/tars for tar in * do base=$(basename "$tar") "$base" -tvf >> /mnt/local/data/logs/"$base".csv done but i get this error - ./tar_loop.sh: line 8:... (2 Replies)
Discussion started by: robertkwild
2 Replies

2. UNIX for Dummies Questions & Answers

why doesnt it work?

I am trying to print out two fields in a file using awk. So, I have got awk -F '\t' 'NF = 2 {print $1 $2 "]"}' two.txt in a script called what.awk When i run this version like this - ./what.awk then it runs however I want to run the program like this awk -f what.awk two.txt. When I... (8 Replies)
Discussion started by: The undertaker
8 Replies

3. AIX

Vi doesnt work

Hi Guys, I have a strange problem.( AIX 6.1) "vi" is not working at all..Whenever i #vi <anythin> ,, it returns the prompt back. Any clues folks?? (14 Replies)
Discussion started by: muzahed
14 Replies

4. Shell Programming and Scripting

compiler doesnt work

this is my file I have written. // My first C++ program #include <iostream> int main() { std::cout << "Hi there!" << std::endl"; std::cout << "This is my first C++ program" << std::endl"; return(0); } This is the error I get, why? $ g++ first.cpp ksh: g++: not found (1 Reply)
Discussion started by: gustave
1 Replies

5. Shell Programming and Scripting

loop doesnt work

It just does the break...even though the files are not the same... # Compare extracts #========================================== count=0 while (( count < 5 )) do (( count+=1 )) echo "Try $count" file1=$(ls -l /tmp/psjava.xml|... (5 Replies)
Discussion started by: sigh2010
5 Replies

6. Red Hat

ldapsearch doesnt work.

Hii All, I am using openldap v2.3 on redhat El-4. When i run ldapsearch it returns all the entries. The command runs successfully. But when I run the ldapsearch with following filter option it doesnt work and immediately returns to the shell. ldapsearch uidNumber>=2000 I've started slapd... (0 Replies)
Discussion started by: shamik
0 Replies

7. UNIX for Dummies Questions & Answers

cp doesnt work - Help

When trying to copy a file in Solaris 8 it doesnt copy file or give a error. This worked 100% until the 29th. I've checked the rights and everything seems fine: drwxrwxrwx 2 bmuser bmgroup 11776 Jan 3 10:32 spool This is the file I want to copy: -rwxrwxrwx 1 bmuser bmgroup ... (26 Replies)
Discussion started by: rudi.okelly
26 Replies

8. HP-UX

ls command doesnt work

Good Day I mistakely renamed the dld.sl file in the /usr/lib directory. When i try to ls/ftp into the box i get this error :eek: crt0: ERROR couldn't open /usr/lib/dld.sl errno:000000002 I have tried to rename it back from the renamed file to the original file name, but it gives me the... (2 Replies)
Discussion started by: shawnbishop
2 Replies

9. UNIX for Dummies Questions & Answers

cd.. doesnt work

hi when i want to go to previous directory by typing cd.. i get the following message $ cd.. ksh: cd..: not found Please help rintingtong (2 Replies)
Discussion started by: rintingtong
2 Replies

10. Shell Programming and Scripting

why doesnt my script work!!!

Is there a utility or command I can use to tell the number of decimal places a number has. For instance, if the number is 432, it will give hundred as the number of decimal places. (7 Replies)
Discussion started by: Heedunk
7 Replies
Login or Register to Ask a Question