LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 764|回复: 4

请教一个脚本,赋值问题

[复制链接]
发表于 2009-4-15 18:06:58 | 显示全部楼层 |阅读模式
#!/bin/sh
#2009-04-15

DEV_FIND=0


mount | while read LINE_STR ;
do
if [ "$DEV_FIND" = "abc" ]; then
        DEV_FIND=1
        echo "111111111111111111111111, $DEV_FIND";
else
        DEV_FIND=2
        echo "222222222222222222222222, $DEV_FIND";
fi
done

echo "333333333333, $DEV_FIND"



执行结果如下:
$
~ $ test.sh
222222222222222222222222, 2
222222222222222222222222, 2
222222222222222222222222, 2
222222222222222222222222, 2
222222222222222222222222, 2
222222222222222222222222, 2
222222222222222222222222, 2
222222222222222222222222, 2
222222222222222222222222, 2
222222222222222222222222, 2
222222222222222222222222, 2
333333333333, 0
~ $
~ $

表明22222这个执行到了,但是值没有付进去,这个怎么解决呢,谢谢
 楼主| 发表于 2009-4-15 18:10:09 | 显示全部楼层
平台是busybox下面的默认脚本sh
回复 支持 反对

使用道具 举报

发表于 2009-4-15 18:23:52 | 显示全部楼层
之前也有人问过一个Shell的问题,和你的问题的原因是一样的。

原因就是你用的管道,对于管道,Shell会启动一个新的进程的。所以你在循环(新进程)里的赋值是没有效果的。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-4-15 18:28:56 | 显示全部楼层
上面的脚本在bash中可以。

现在也找不到好的解决方法了,
参考http://topic.csdn.net/u/20080225 ... 5-b31b8edd7a61.html

把变量值写到文件里面,暂时解决

谢谢
回复 支持 反对

使用道具 举报

发表于 2009-4-15 21:15:30 | 显示全部楼层
mount是挂载命令,这里的mount什么意思?请指教。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表