While loop

Hello friends

Please put some light where i am wrong

My functionality is like for first time it must do echo "tar -Cvf"
and after that till end of file b.txt it must do tar -rvf.

counter=0
while read EachLine do
z=$(awk -F"," '{ print $4"_"$2}' b.txt)
echo $z
echo "tar -Cvf"
      if [ "$counter" > 0 ]
         then
         echo " tar -rvf process"
      fi
     counter=`expr $counter + 1`
     echo $counter
done < b.txt

Im maybe half asleep...
What is EachLine?
(except in the while you dont seem to use it... and its reading from where?)

I think we need to see the contents of file b.txt and the expected output. There appears to be some confusion in the script about when to use a filename and when to use a variable.

Also "tar -Cvf" should probably be "tar -cvf".

Guys for more detail please find the code
b.txt contents:
Object (,BDRJX648,001,T_BDRTARGE,BDRXTRSDS,001) extracted
Object (,BDRMX100,001,T_BDRTARG2,BDRXTR,001) extracted

Code:

function pln
{
echo   "TO EXPORT PLANNIFICATION GIVE PLANNIFICATION NAME IN THE input.txt and Management unit in the mu.txt and PRESS Y EX:BDRMX100"
echo   "TO GO BACK PRESS 99"
read parm0
if [ "$parm0" == "99" ];
then
start
elif [ "$parm0" == "Y" ];
then
while read EachRecord
do
s=`echo $EachRecord | cut -d " " -f1`
p=`echo $EachRecord | cut -d " " -f2`
echo $s
echo $p
$UXEXE/uxext tsk ses=$s vses=* upr=* model mu=$p output=${p}_$s.pnf APP | tee -a log.txt
sed 's;^ *;;;s; *, *;,;g;s; *$;;' log.txt > b.txt
done < input.txt
counter=0
while read z
do
z=$(awk -F"," '{ print $4"_"$2}' b.txt)
echo $z
#tar -cvf plannification.tar ${m}_${n}.pnf
echo "tar -Cvf"
if [ "$counter" > 0 ]
then
    #tar -rvf plannification.tar ${m}_$n.pnf
    echo " tar -rvf process"
else
    echo "Tar CVF"
fi
counter=`expr $counter + 1`
echo $counter
done < b.txt
fi
}




o/p:
BDRJX648
T_BDRTARGE
Object ( , BDRJX648  , 001, T_BDRTARGE, BDRXTRSDS , 001) extracted              
BDRMX100
T_BDRTARG2
Object ( , BDRMX100  , 001, T_BDRTARG2, BDRXTR    , 001) extracted              
T_BDRTARGE_BDRJX648 T_BDRTARG2_BDRMX100
tar -Cvf
 tar -rvf process
1
T_BDRTARGE_BDRJX648 T_BDRTARG2_BDRMX100
tar -Cvf
 tar -rvf process
2


PROBLM:While loop must do first time tar -cvf and after for all values of z it must do tar -rvf 




---------- Post updated at 12:06 PM ---------- Previous update was at 11:16 AM ----------

That is ok it is just a echo command to display msg not a problem

Had to indent to follow the if and while statements. Still found it difficult to follow.
Where you have "start", do you mean "return" (exit from a function).

There are two issues in the counter loop:
1) You are reading file b.txt line by line into variable $z, then immediately reading the first line of b.txt and formatting it into $z. I think you meant to process each line of b.txt in turn.
2) $counter is a number. We should use numeric comparisons. It is conventional to increment a counter at the start of a loop.
3) Though in commented out lines I can't see where $m and $n come from unless ${m}_${n} is now ${z} ?
4) Overall I'm suggesting some changes without testing them or really understanding what you are doing.

function pln
{
echo   "TO EXPORT PLANNIFICATION GIVE PLANNIFICATION NAME IN THE input.txt and Management unit in the mu.txt and PRESS Y EX:BDRMX100"
echo   "TO GO BACK PRESS 99"
read parm0
if [ "$parm0" == "99" ]
then
     start
elif [ "$parm0" == "Y" ]
then
     while read EachRecord
     do
          s=`echo $EachRecord | cut -d " " -f1`
          p=`echo $EachRecord | cut -d " " -f2`
          echo $s
          echo $p
          $UXEXE/uxext tsk ses=$s vses=* upr=* model mu=$p output=${p}_$s.pnf APP | tee -a log.txt
          sed 's;^ *;;;s; *, *;,;g;s; *$;;' log.txt > b.txt
     done < input.txt
     #
     #
     counter=0
     awk -F"," '{ print $4"_"$2}' b.txt | while read z
     do
          echo $z
          counter=`expr $counter + 1`
          echo $counter
          # First time through we create tar archive.
          # Second and subsequent times we append to tar archive.
          if [ $counter -eq 1 ]
          then
               #tar -cvf plannification.tar ${m}_${n}.pnf
               echo "tar -cvf process"
          else
               #tar -rvf plannification.tar ${m}_${n}.pnf
               echo "tar -rvf process"
          fi
      done
fi
}

Plz find the entire code

function ext
{
echo "THANKS & WELCOME BACK"
}

function upc
{
echo   "TO EXPORT UPROC GIVE UPROC NAME PER LINE IN THE input.txt and PRESS Y"
echo   "TO GO BACK PRESS 99"
read parm0
 if [ "$parm0" == "99" ];
 then
 start
 elif [ "$parm0" == "Y" ];
 then
  for i in `cat input.txt` ; do
  echo $i 
  $UXEXE/uxext upr upr=$i output=$i.upr APP

#if [ $? --ne 0 ]
#    then 
#        err_msg="command is unsuccessfull>"     
#        eval ERREUR
#     fi 
  echo "$output UPROC exported"
  done
 fi
}

function ses
{
echo   "TO EXPORT SESSION GIVE SESSION NAME PER LINE IN THE input.txt and PRESS Y"
echo   "TO GO BACK PRESS 99"
read parm0
 if [ "$parm0" == "99" ];
 then
 start
 elif [ "$parm0" == "Y" ];
 then
  for i in `cat input.txt` ; do
  echo $i 
  $UXEXE/uxext ses ses=$i output=$i.ses APP
  echo "$output SESSION exported"
  done
 fi
}

function pln
{ 
  echo   "TO EXPORT PLANNIFICATION GIVE PLANNIFICATION NAME IN THE input.txt and Management unit in the mu.txt and PRESS Y EX:BDRMX100"
  echo   "TO GO BACK PRESS 99"
  read parm0
   if [ "$parm0" == "99" ];
    then
     start
      elif [ "$parm0" == "Y" ];
       then
        while read EachRecord
         do
          s=`echo $EachRecord | cut -d " " -f1`
          p=`echo $EachRecord | cut -d " " -f2`
          $UXEXE/uxext tsk ses=$s vses=* upr=* model mu=$p output=${p}_$s.pnf APP | tee -a log.txt
          sed 's;^ *;;;s; *, *;,;g;s; *$;;' log.txt > b.txt
         done < input.txt
   fi

      counter=0
      for j in $(cat b.txt) ; do
      echo $j
      echo "for loop start"
      echo $j
      if [ "$counter" < 1 ] ;
      then
      echo "if start"
      #z=$(awk -F"," '{ print $4"_"$2}' b.txt)
      #tar -cvf plannification.tar ${m}_${n}.pnf
      counter=`expr $counter + 1`
      echo "tar -cvf"
      else
      echo "tar -rvf"
      fi
      done
}

function start 
{
echo      "FOR UPROC EXPORT PRESS 1"
echo      "FOR SESSION EXPORT PRESS 2"
echo      "FOR PLANNIFICATION EXPORT PRESS 3"
echo      "TO EXIT PRESS 99"
read option1
if [ "$option1" == "1" ];
then
upc
elif [ "$option1" == "2" ];
then
ses
elif [ "$option1" == "3" ];
then
pln
elif [ "$option1" == "99" ];
then
ext
fi
}
echo "                                                                               *****WELCOME******                                   "
echo "                                                                           PLEASE PRESS 0 FOR DETAILS                          "
echo "                                                                              TO EXIT PRESS 99                                      "
read option
if [ "$option" == "99" ];
then
ext
elif [ "option" == "0" ];
echo "In start function"
then
start
fi