[CentOS] Bash scripting - Remotely ran commands break while loop

Wed Feb 1 21:46:36 UTC 2012
Alexander Dalloz <ad+lists at uni-x.org>

Am 01.02.2012 22:07, schrieb Peter Blajev:
> I have two CentOS5 systems server1 and server2. There is user peter on
> server1 who can ssh to server2 using public ssh keys and no password is
> needed.
> 
> What I noticed is that running remote ssh commands in bash script breaks
> while loops.
> 
> ======
> #!/bin/sh
> for i in server2 server2; do
>      echo "--> Start"
>      ssh peter@$i ls
>      echo "--> END"
> done
> 
> echo " server2
> server2" | \
> while read confLine; do
>      echo "--> $confLine"
>      ssh peter@$confLine ls
>      echo "--> END $confLine"
> done
> ====
> 
> The "for" loop in the script above will run twice but the "while" loop
> below it will run only once.
> 
> This is very simple to test and I've tried it on different systems
> including CentOS6 and OpenSolaris with the same result.
> 
> Any idea what would cause the ssh command to break the while loop?
> 
> Thanks
> Peter

That has simply nothing to do with SSH. Compare following:

echo "foo bar" | while read LINE; do echo $LINE; done

and

echo -e "foo\nbar" | while read $LINE; do echo $LINE; done

Alexander