LinuxBash是否有do-while循环?
在互联网上进行了一些搜索之后,Bash似乎没有do-while循环 这是正确的吗?是否有可靠的来源来证实这一点(没有证据表明存在do-while循环并不是说没有,也许一个声明只是不受欢迎)LinuxBash是否有do-while循环?,linux,bash,do-while,Linux,Bash,Do While,在互联网上进行了一些搜索之后,Bash似乎没有do-while循环 这是正确的吗?是否有可靠的来源来证实这一点(没有证据表明存在do-while循环并不是说没有,也许一个声明只是不受欢迎) 是否可以自己定义指令,从而实现do-while循环?有一种算法方法可以在while循环中转换do while循环,但这不是这个问题的范围。不,bash没有do while循环。本节列出了之前的,期间的和的注意没有do-whilebash(或通常的Posix shell)没有测试后循环的显式语法(通常称为“do
是否可以自己定义指令,从而实现do-while循环?有一种算法方法可以在while循环中转换do while循环,但这不是这个问题的范围。不,bash没有
do while
循环。本节列出了之前的,期间的
和的注意没有do-while
bash
(或通常的Posix shell)没有测试后循环的显式语法(通常称为“do-while”循环),因为语法是多余的。while
复合语句允许您使用相同的语法编写测试前、测试后或测试中的循环
下面是shellwhile
循环的语义,来自:
while循环的格式如下所示:
while
optional-pre-test-compound-list
condition
do
post-test-compound-list
done
应执行复合列表-1,如果其具有非零退出状态,则应完成while命令。否则,应执行化合物-list-2,并重复该过程
“复合列表”是一系列命令;复合列表的退出状态是列表中最后一个命令的退出状态
这意味着您可以将while
循环想象为如下所示:
while
optional-pre-test-compound-list
condition
do
post-test-compound-list
done
也就是说,不要求要测试的条件立即跟随while关键字。因此,与C语法等价的是:
do statements while (test);
是
do和done之间需要:
,因为shell语法不允许空语句。因为:
不是元字符,所以它前后必须有空格或元字符;否则,它将被解析为前面或后面标记的一部分。因为它被解析为一个命令,所以它后面还需要一个分号或换行符;否则,done
将被视为:
的参数,请参见:
while statements; test do :; done