A="1"
B="2"
C="/home/test/a"
cat $C | grep -v '^#' | while read LINE
do
if [ "x$A" = "x1" ]; then
B=$A
echo $B
fi
done
echo $B
第一个echo打印的是1
第二个echo打印的是2
原因及使用全局变量的方法:
cat $C | grep -v '^#' | while read LINE你的这句开启了一个子shell,
do
if [ "x$A" = "x1" ]; then
export B=$A
echo $B
fi
done
你在子shell中对B重新赋值是不能影响到父shell的,所以你最后echo $B时值没有改变。
while read LINE
do
if
B=$A
fi
done<$C
这样是可以重新赋值的