KornShell(ksh)有一个Do…While循环吗?

KornShell(ksh)有一个Do…While循环吗?,shell,unix,scripting,ksh,Shell,Unix,Scripting,Ksh,我的KornShell(ksh)脚本中有一个循环,我想至少执行一次,我想用一种优雅的方式来执行它,然而,尽管我已经找到了很多关于如何编写while循环的东西,但似乎没有什么东西可以做……while循环 我所做的是从配置文件中读取以逗号分隔的文件列表并对其进行处理。如果文件列表为空,则我希望处理目录中的所有文件 做这件事的好方法是什么 编辑:这是我目前拥有的。我获取文件名,然后将其从字符串中删除,以便下一次传递。如果文件列表为空,则退出循环。但是,如果列表一开始是空的,我希望它仍然运行一次 w

我的KornShell(ksh)脚本中有一个循环,我想至少执行一次,我想用一种优雅的方式来执行它,然而,尽管我已经找到了很多关于如何编写while循环的东西,但似乎没有什么东西可以做……while循环

我所做的是从配置文件中读取以逗号分隔的文件列表并对其进行处理。如果文件列表为空,则我希望处理目录中的所有文件

做这件事的好方法是什么

编辑:这是我目前拥有的。我获取文件名,然后将其从字符串中删除,以便下一次传递。如果文件列表为空,则退出循环。但是,如果列表一开始是空的,我希望它仍然运行一次

  while [[ -n "${FILES%%,*}" ]]; do
       FILE="${FILES%%,*}"                             
       FILES="${FILES#*,}"
  done

ksh中没有此类构造。您可以通过在
结尾处的
中断
(或
继续
)来模拟这一点,同时为true;做完成循环。

您可以伪造它:

do_once=true
while $do_once || [[ other condition ]]; do
  : your stuff here

  do_once=false
done

是的,标准的
while
循环in
ksh
支持开箱即用:

while ...; do ...; done
标准的
while
循环在
do
前后都有代码块

每个块可以包含多个命令。按照惯例,我们只使用 第一个块的单个命令,其退出状态决定是否 循环终止或继续

当我们使用多个命令时,只有 最后一个命令的状态很重要

while
   echo do this always # replace with your code
   [[ -n "${FILES%%,*}" ]]
do
   FILE="${FILES%%,*}"                             
   FILES="${FILES#*,}"
done

你试过先用谷歌搜索吗?对不起,没有。。。而在ksh。请考虑编辑您的问题,包括您的最佳通行证在代码到目前为止。当我们能看到你在做什么时,帮助就容易多了。祝你好运,一段正常的时间。。。做loop可以开箱即用。请看我在别处的答案。太好了,我很尴尬我没有想到。然而,这个结构是存在的<代码>而block1;条件执行区块2;完成
<代码>块1是始终执行的代码。不需要
中断
继续