| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 650 人关注过本帖
标题:bash中的while产生子进程的问题
只看楼主 加入收藏
明明白白
Rank: 2
等 级:论坛游民
帖 子:57
专家分:61
注 册:2012-3-19
结帖率:83.33%
收藏
已结贴  问题点数:5 回复次数:9 
bash中的while产生子进程的问题
#!/bin/bash

i=0
while [ $i -lt 10 ]
do
    echo hello
    i=`expr $i + 1`
    sleep 1
done
echo "i="$i
结果输出10,但是我记得老师讲的时候输出的是0。会不会是linux版本不同?
搜索更多相关主题的帖子: sleep hello 
2012-09-02 20:58
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
初学 帮顶。。


梅尚程荀
马谭杨奚







                                                       
2012-09-02 22:22
madfrogme
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:21
帖 子:1160
专家分:1106
注 册:2009-6-24
收藏
得分:0 
不明白怎么得到0, 我的机器上是10

为什么把while 下面的语句叫 子进程?

i=`expr $i + 1`   这是一个 arithmetic expansion with backticks
也可以写成
let i=i+1
i=$(($i+1))

不好意思,没能给你满意的答覆
但如果机器都显示10, 那大概就是你记错了?

这和linux版本不同没什么联系吧

The quieter you become, the more you can hear
2012-09-02 22:49
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:5 
怎么也不会是零呀。只有一个相当于 ++i 的语句,i 是不会再变小了吧。
i = `expr $i + 1` 的写法除了 mad 说的以外,也可以写成 let ++i。

expr 是个外部程序,据说一个好的习惯是,能用 builtin 干的就不用外部程序干。

可以把 while 放在子进程里,方法是加对括号:
程序代码:
#!/bin/bash

i=0
(while [ $i -lt 10 ]
do
    echo hello
    i=`expr $i + 1`
    #sleep 1    # 注释了吧,除了费时间以外没什么用处。
done
)
echo "i="$i
这个是输出 0.
2012-09-03 00:48
madfrogme
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:21
帖 子:1160
专家分:1106
注 册:2009-6-24
收藏
得分:0 
以下是引用pangding在2012-9-3 01:48:10的发言:

怎么也不会是零呀。只有一个相当于 ++i 的语句,i 是不会再变小了吧。
i = `expr $i + 1` 的写法除了 mad 说的以外,也可以写成 let ++i。

expr 是个外部程序,据说一个好的习惯是,能用 builtin 干的就不用外部程序干。

可以把 while 放在子进程里,方法是加对括号:
#!/bin/bash

i=0
(while [ $i -lt 10 ]
do
    echo hello
    i=`expr $i + 1`
    #sleep 1    # 注释了吧,除了费时间以外没什么用处。
done
)
echo "i="$i这个是输出 0.


原来加上括号就可以

The quieter you become, the more you can hear
2012-09-03 09:17
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
学习
2012-09-03 10:18
明明白白
Rank: 2
等 级:论坛游民
帖 子:57
专家分:61
注 册:2012-3-19
收藏
得分:0 
回复 4楼 pangding
谢谢。。我懂了,求加好友,以后有问题可以请教
2012-09-03 19:59
明明白白
Rank: 2
等 级:论坛游民
帖 子:57
专家分:61
注 册:2012-3-19
收藏
得分:0 
回复 4楼 pangding
求加qq,方便求教,真心的
2012-09-03 20:02
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:0 
回复 8楼 明明白白
我很少用 qq。有问题就在论坛问吧,其他的人也会积极回答的。
2012-09-03 21:31
明明白白
Rank: 2
等 级:论坛游民
帖 子:57
专家分:61
注 册:2012-3-19
收藏
得分:0 
回复 9楼 pangding
噢,知道了,谢谢
2012-09-03 22:07
快速回复:bash中的while产生子进程的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.046086 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved