On Sun, 23 Dec 2012 01:05:35 -0800 (PST), Jack Mc Lauren wrote:
> Hi all
> Please take a look at the script below wich I've wrote :
> 1- cat /foo/bar.txt | while read $LINE12- do3-    cat /foo/bar/foo/bar.txt | 
> while read $LINE24-    do 5-         if [ "$LINE1" = "$LINE2" ]; then6-       
>         sw="1"7-               echo "Current value of sw is : " $sw8-         
>       break9-         fi10-    done11-    echo "Value of sw is : " $sw12-    
> if [ "$sw" = "0" ]; then13-         DO SOMETHING14-    fi15-    sw="0"16- 
> done    

This is totally distorted! Allow me to re-arrange it.



cat /foo/bar.txt | while read $LINE1
do
        cat /foo/bar/foo/bar.txt | while read $LINE2
        do
                if [ "$LINE1" = "$LINE2" ]; then
                        sw="1"
                        echo "Current value of sw is : " $sw
                        break
                fi
        done
        echo "Value of sw is : " $sw
        if [ "$sw" = "0" ]; then
                DO SOMETHING
        fi
        sw="0"
done



First, the lines with "read" have to be:

cat /foo/bar.txt | while read $LINE1

        cat /foo/bar/foo/bar.txt | while read $LINE2

Reason: $LINE1 and $LINE2 will be evaluated here, they are "empty
string", causing "read" to throw an error.

      


> You probebly guessed what I want to do. But the problem is that
> when the value of sw sets to 1 (in the first if statement) and
> the loop breaks , the value of sw is not '1' anymore in
> " echo "Value of sw is : " $sw " !!!
> Thanks in advance ...

For testing, I've replaced the $sw=0 line with an "echo" command.
I've created two files foo.txt and bar.txt for test, both have
one line in common (3rd line in my example data). If I run the
script, I get this output:

Value of sw is :                <- after 1st line (uninitialized)
Value of sw is :  0             <- after 2nd line
DO SOMETHING!
Current value of sw is :  1     <- after 3nd line (common entry)
Value of sw is :  0             <- after 4th line
DO SOMETHING!
Value of sw is :  0             <- after 5th line
DO SOMETHING!

It seems that the condition $LINE1=$LINE2 properly triggers
the "current value" echo command, while all non-common lines
trigger the "DO SOMETHING" action.

If you indended something else, please elaborate.



-- 
Polytropon
Magdeburg, Germany
Happy FreeBSD user since 4.0
Andra moi ennepe, Mousa, ...
_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-questions
To unsubscribe, send any mail to "[email protected]"

Reply via email to