问题描述
- 同一个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:
解决方案
顶起来,晚上就要交作业了,很奇怪,为什么第一个LIBS_DIR可以,最后一个LIBS_DIR就错了,哎,无解哇~~
解决方案二:
我猜时作用域的关系。
前一个 ECHO 的 LIBS_DIR 仅在 do...done 域内生效;
后一个 ECHO 的 LIBS_DIR 其实在外部域内没定义。
它们是两个变量。
时间: 2024-12-24 00:38:11