[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Quilt-dev] [OT] bash question
From: |
Jean Delvare |
Subject: |
[Quilt-dev] [OT] bash question |
Date: |
Thu, 8 Sep 2005 23:08:27 +0200 |
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] [OT] bash question,
Jean Delvare <=