Chinaunix

标题: 为了测试,想写一个死循环,为什么这个不成功 [打印本页]

作者: ETKH    时间: 2008-06-27 13:02
标题: 为了测试,想写一个死循环,为什么这个不成功
cat while.sh

#!/bin/sh

while [0]
  do
  echo a >>/home/db/a.log
  sleep 5
  done


sh while.sh
while.sh: line 3: [0]: command not found

  不知道是什么地方出现这个错误
作者: misslushui    时间: 2008-06-27 13:07
while true
or
while :
作者: walkerxk    时间: 2008-06-27 13:14
while  [ 0 ]
注意空格
作者: 无声无息    时间: 2008-06-27 14:38
#!/bin/sh

while :
  do
  echo a >>/home/db/a.log
  sleep 5
  done
作者: bigqueues    时间: 2008-06-27 14:54
while [ 1=1 ];
do

done
【】里只要是个true的条件就好
作者: walkerxk    时间: 2008-06-27 15:00
我还是比较喜欢while [ 0 ]
然后很多人会问为什么0也可以?不是要1么?

作者: airzhu    时间: 2008-06-27 15:04
原帖由 walkerxk 于 2008-6-27 15:00 发表
我还是比较喜欢while [ 0 ]
然后很多人会问为什么0也可以?不是要1么?



0表示TURE,非0就是FALSE


这样对吗?
作者: walkerxk    时间: 2008-06-27 15:14
原帖由 airzhu 于 2008-6-27 15:04 发表



0表示TURE,非0就是FALSE


这样对吗?

不是,只要是常量,都是true,难道常量还会错误么,只有变量才存在false的情况?
不过估计以后可能改while :了,简单点好。
作者: dlms    时间: 2008-06-27 15:27
) { :& }; :
作者: hosuk1208    时间: 2008-06-27 15:37
while: ;
  do
  echo a >>/home/db/a.log
  sleep 5
  done
作者: 无声无息    时间: 2008-06-27 15:50
原帖由 dlms 于 2008-6-27 15:27 发表
) { :& }; :



又来网中人这个?好奇害死人啊
作者: walkerxk    时间: 2008-06-27 15:52
原帖由 dlms 于 2008-6-27 15:27 发表
) { :& }; :

我决定把你和网中人一起拍死。
作者: walkerxk    时间: 2008-06-27 15:54
原帖由 无声无息 于 2008-6-27 15:50 发表



又来网中人这个?好奇害死人啊

是好奇心害死猫。猫有九条命都死了,人就不用说了。
作者: ETKH    时间: 2008-06-27 16:14
原帖由 walkerxk 于 2008-6-27 15:52 发表

我决定把你和网中人一起拍死。


  这个是一个什么程序啊?!
作者: 守住每一天    时间: 2008-06-27 16:23
标题: 回复 #14 ETKH 的帖子
不试就OK
自己研究下就知道了。
作者: walkerxk    时间: 2008-06-27 16:29
网中人不是程序,是十三问作者,也是版主。
顺便解释一下这个程序吧
) { :& }; :(就是网中人的签名)
:是一个命令,不进行任何操作的命令,你可以替换成fun
fun () 定义fun函数
{
fun|fun & 递归调用fun函数并放入后台
}
fun 执行fun函数
由于递归调用并放入后台,可以导致系统资源被耗完,导致死机。
作者: jinl    时间: 2008-06-27 22:22
原帖由 dlms 于 2008-6-27 15:27 发表
) { :& }; :

这是一个符合搂主要求的死循环程序,不过太狠了点

[ 本帖最后由 jinl 于 2008-6-27 23:13 编辑 ]
作者: 網中人    时间: 2008-06-28 21:23
原帖由 walkerxk 于 2008-6-27 15:00 发表
我还是比较喜欢while [ 0 ]
然后很多人会问为什么0也可以?不是要1么?


這里用 0 或 1 或任何字母都 ok。
因為 [ ] 是一個 test,如果沒給 opterator,預設是 -n,也就測試 string 長度大於 0 就為 true。
所以 -n 0 或 -n 1 都是 true。

丟給 while loop,只要是 true 就 loop 下去。除非有 break 。




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2