I have written a script file that first makes a ssh connection with the remote system and then does some job. My script file is as follows

#! /bin/sh
ssh <<EOF
sa=`/usr/sbin/alternatives --config java </root/Desktop/1.txt 2>&1 | grep jdk1.6.0_05`
echo $sa
sa2=`echo $sa | sed -e 's/[^0-9]//g'`
sa3=`echo $sa2 | head -c 1 >/root/Desktop/2.txt` 
echo @sa3
echo "end"

The ssh connection is formed successfully. But sa is not printing anything. just a blank line
similarly sa3. But end is being printed. Both text files (1.txt and 2.txt)resides in the remote system. I know the problem is with this line

sa=`/usr/sbin/alternatives --config java </root/Desktop/1.txt 2>&1 | grep jdk1.6.0_05`

The command is not taking input from 1.txt which is residing on the remote system. Where am i going wrong.

At the moment you are throwing away the output from running /etc/sbin/alternatives because it gets filtered through grep before you print the value of $sa.


#! /bin/sh
ssh <<EOF
   sa=`/usr/sbin/alternatives --config java 2>&1`
   echo "Result:"
   echo "$sa"
   echo "Will I find anything when I look in that result for jdk1.6.0_05 ???"
   echo "$sa" | grep "jdk1.6.0_05"
   echo "Nope. I thought not! But the reason should be clear now!"