在Linux的Bashshell中,while复合命令(compoundcommand)和until复合命令都可以用来循环指定的语句,直到遇到false。查看manbash中while和until的描述如下:whilelist-1;做清单2;完成直到list-1;做清单2;只要列表list-1中的最后一个命令返回退出状态为零,while命令就会连续执行列表list-2。until命令与while命令相同,除了测试被否定;只要list-1中的最后一个命令返回非零退出状态,就会执行list-2。while和until命令的退出状态是list-2中执行的最后一个命令的退出状态,如果没有执行则为零。可以看出,while命令首先判断list-1语句的最后一条命令是否返回0,如果为0则执行list-2语句;如果不为0,则不执行list-2语句,并退出整个循环。即while命令是在判断为0的时候执行里面的语句。和while命令的执行条件相反,until命令在判断不为0的时候执行里面的语句。注意:有一个比较不正常的key点这里。Bash使用0为真,1为假,而大多数编程语言使用1为真,0为假。注意区分,以免误解判断条件的执行关系。在bash中,test命令和[命令作为判断条件,但是while命令不限于使用这两个命令进行判断。其实任何命令都可以跟在while命令后面,while命令是根据命令的返回值来判断的。做出判断,举例如下。下面的while循环类似于C语言中的while(--count>=0)语句。使用[命令判断count变量的值是否大于0,如果大于0则执行while循环中的语句:count=3while[$((--count))-ge0];do#dosomethingdone下面的while循环使用read命令读取filename文件的内容,直到读取完成。当read命令读取到EOF时,会返回一个非零值,从而退出while循环:whilereadfileline;do#dosomethingdone
