title: ssh breaks out of while-loop in bash
body: <p>I use this bash-code to upload files to a remote server, for normal files this works fine:</p>
  
  <pre><code>for i in `find devel/ -newer $UPLOAD_FILE`
  do
      echo "Upload:" $i
      if [ -d $i ]
      then
          echo "Creating directory" $i
          ssh $USER@$SERVER "cd ${REMOTE_PATH}; mkdir -p $i"
          continue
      fi
      if scp -Cp $i $USER@$SERVER:$REMOTE_PATH/$i
      then
          echo "$i OK"
      else
          echo "$i NOK"
          rm ${UPLOAD_FILE}_tmp
      fi
  done
  </code></pre>
  
  <p>The only problem is that for files with a space in the name, the for-loop fails, so I replaced the first line like this:</p>
  
  <pre><code>find devel/ -newer $UPLOAD_FILE | while read i
  do
      echo "Upload:" $i
      if [ -d $i ]
      then
          echo "Creating directory" $i
          ssh $USER@$SERVER "cd ${REMOTE_PATH}; mkdir -p $i"
          continue
      fi
      if scp -Cp $i $USER@$SERVER:$REMOTE_PATH/$i
      then
          echo "$i OK"
      else
          echo "$i NOK"
          rm ${UPLOAD_FILE}_tmp
      fi
  done
  </code></pre>
  
  <p>For some strange reason, the ssh-command breaks out of the while-loop, therefore the first missing directory is created fine, but all subsequent missing files/directories are ignored.</p>
  
  <p>I guess this has something to do with ssh writing something to stdout which confuses the "read" command. Commenting out the ssh-command makes the loop work as it should.</p>
  
  <p>Does anybody know why this happens and how one can prevent ssh from breaking the while-loop?</p>