SCO的shell里子循环的变量值为什么不能带到你循环里来!

屏风竹影 2008-04-10 03:00:37
谁能告诉我下面这段SCO下的shell有什么问题?
cnt=0
for dbs in all_dbs

do
onstat -d|grep $dbs|grep -v "informix $dbs"|sort +5 -nr|while read a b c d e f g h
do
cnt=`expr $cnt + $f`
echo "f===="$f
echo "cnt==="$cnt
done
echo "cnt111===="$cnt
cnt=`expr $cnt \* 4 \/ 1024`
echo $dbs"====["$cnt"]MB"
done

运行结果:
$ sh fcdbssize.sh
f====66480
cnt===66480
f====31361
cnt===97841
cnt111====0
all_dbs====[0]MB
为什么到echo "cnt111===="$cnt这一句的时候cnt值变成0了,也就是子循环里变量的值带不出来,很郁闷,谢高手帮我分析一下,不胜感谢!
...全文
41 点赞 收藏 4
写回复
4 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
meiZiNick 2008-05-01
我也想了解,谢谢LZ.
回复
lz要干嘛?
回复
屏风竹影 2008-04-10
奇怪自己怎么不能修改自己的贴子呢?
这里补充一点,我用的是SCO V5.06版的环境,运行出现如上结果!
我现在用了一个比较挫的方法来解决这个问题,就是在:
echo "cnt==="$cnt
done
中间加了写入文件的语句,再在done后读出来,就可以了,如:
echo "cnt==="$cnt
echo $cnt > tmp0.txt
done
read cnt1 < tmp0.txt
rm tmp0.txt
上面这样做就可以,但是这个方法实在是不爽,各位能不能给点好建议?
回复
相关推荐
发帖
UNIX文化
创建于2007-08-27

2155

社区成员

Linux/Unix社区 UNIX文化
申请成为版主
帖子事件
创建了帖子
2008-04-10 03:00
社区公告
暂无公告