同一个shell的变量的有效范围

为什么变量LIBS_DIR在cat内的值是正确的为什么在最后的一个echo就变为空了?

是这个变量有有效范围了么?

cat $PWD/.tmp | while read line

do
echo "creat main line:$line"
SUB_PATH=$line
SUB_NAME=${SUB_PATH##*/}
echo "$SUB_NAME/lib${SUB_NAME}.a"
LIBS_DIR=$LIBS_DIR" "$SUB_NAME/lib${SUB_NAME}.a
echo "LIBS_DIR:$LIBS_DIR"
done;
echo "LIBS_DIR:$LIBS_DIR"

执行结果为:

creat main line:/home/test/gun/m1
m1/libm1.a
LIBS_DIR: m1/libm1.a
creat main line:/home/test/gun/m2
m2/libm2.a
LIBS_DIR: m1/libm1.a m2/libm2.a
creat main line:/home/test/gun/m3
m3/libm3.a
LIBS_DIR: m1/libm1.a m2/libm2.a m3/libm3.a
LIBS_DIR:

2个回答

顶起来,晚上就要交作业了,很奇怪,为什么第一个LIBS_DIR可以,最后一个LIBS_DIR就错了,哎,无解哇~~

我猜时作用域的关系。
前一个 ECHO 的 LIBS_DIR 仅在 do...done 域内生效;
后一个 ECHO 的 LIBS_DIR 其实在外部域内没定义。
它们是两个变量。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问