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.
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
}
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