Hi all,
I have a half off-topic question about bash, and figured out that there
were some experts here who may come to my help :)
It looks like, when using pipes in bash, the scope of variables changes.
Consider the following example:
--- 8< ---
#!/usr/bin/bash
for ((i = 0; i < 4; i++))
do
n=$i
done
echo "n=$n i=$i"
--- 8< ---
This prints "n=3 i=4" as one would expect. However, if I change it to:
--- 8< ---
#!/usr/bin/bash
for ((i = 0; i < 4; i++))
do
n=$i
done \
| cat
echo "n=$n i=$i"
--- 8< ---
This does print "n= i=", that is, the n and i variables are no more
defined past the loop. Can someone explain why? Is there a way to change
that behavior? I am in a case where I badly need the value of one inner
variable after such a construct.
Thanks,
--
Jean Delvare
_______________________________________________
Quilt-dev mailing list
[email protected]
http://lists.nongnu.org/mailman/listinfo/quilt-dev