当前位置: 技术问答>linux和unix
在shell中怎样使用全局变量?
来源: 互联网 发布时间:2015-09-01
本文导语: 我在一个循环中给变量赋值,然后出来打印结果不是预想的,代码如下: 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 ...
我在一个循环中给变量赋值,然后出来打印结果不是预想的,代码如下:
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
为什么?
还有别的方法能读取一个文件中的每一行吗?谢谢
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
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