yhkn.net
当前位置:首页 >> 不知道shEll程序为什么会陷入死循环中? >>

不知道shEll程序为什么会陷入死循环中?

因为 shell 不是通过 扩展值判断 true 和 false 的.而是通过退出状态判断的.应该写成:#!/bin/basha=0.1cond=1while [ "$cond" = 1 ]do# 以字符串的方式,测试条件是否为 "1" .echo $aa=$(echo $a + 0.1|bc) #a 加上0.1cond=$(echo "$a < 1" |bc) #取得条件返回值.1表示成立 0表示不成立.done

以上程序有如下几点错误: 1,!书写错误.应该改成英文的叹号. 2,tcsh中while的语法错误.以上的while写法是sh/bash中while的用法.对于csh/tcsh中while的用法应该为while(expression) do something end 3,为变量赋值错误.read name也

因为在数组越界之后!a[5]的下标访问自动指向a[0]; a[i]里面的i相当于变量I的一个别名!a[i]里面的i值发生了变化!那么变量I也跟着发生变化!那么此时的变量I的值就变为了0!重新进行循环了!不过!一旦遇到数组超限!不需要知道错误原因的!只要知道是一个错误就行了!数据超限有时候也能够引起程序崩溃!等等一些问题!望采纳!

这里改一下: q) echo "quit" a=11 或直接用 break ;; Q) echo "quit" a=11 或直接用 break ;;另外,可以这样写,表示同时匹配两个字母:qQ) xxx ;;

因为if后面那s[j]=s[i];当s[j]=s[i];j++;s[j]=s[i];(这里j=i+1了)也就是s[i+1]=s[i],那么下一个s[i]已经等于s[i-1]的值了,循环到最后,'\0'已经被改为'!'了.所以循环找不到'\0',所以死循环了.

while(1) 肯定是让你的程序陷入死循环了.每次到scanf的时候,程序就会在这阻塞,等待用户输入数据,并清空缓冲区,等待的时候看起来好像不是死循环了,其实你的程序跳不出这个while的.当输入错误的时候,scanf没有得到想要的输入,但缓冲区有数据,就会跳过scanf,不停的循环了.在循环结尾的地方清空缓冲区应该对会有效果.fflush(stdin);

你好!在操作系统对硬盘进行磁盘碎片整理时,如果发生写硬盘的操作,就会重新开始.在整理磁盘碎片前应该禁用屏幕保护功能,将系统等待,关闭硬盘的选项都设置为“从不”就行了哦!!

从语句和语法来看不应发生死循环.因为没有while语句,没有goto语句.你的for语句 循环次数只有5000,不多.你可以插入一些打印语句,进行跟踪,找出出错地点.

按 ctrl + break 就可以退出来了

一般来说有两种方式1,快捷命令 ctrl+c,ctrl+z,ctrl+d,一般的问题这个可以搞定,有时需要多按几次2,kill 在控制台找到死循环的pid,kill -9 $pid 这样就可以把进程终结,当然也就退出了

网站首页 | 网站地图
All rights reserved Powered by www.yhkn.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com