Ste*_*eve 2 unix shell scripting ksh
我在我的KornShell(ksh)脚本中有一个循环,我想要至少执行一次,我想要一种优雅的方式来做,但是当我发现很多关于如何编写while循环的东西时,似乎没有做任何事情......在那里循环.
我正在做的是从配置文件中读取逗号分隔的文件列表并处理它们.如果文件列表为空,那么我想处理目录中的所有文件.
有什么好办法呢?
编辑:这是我目前的情况.我抓取文件名,然后从字符串中删除它以进行下一次传递.如果Files列表为空,我退出循环.但是,如果列表开头为空,我希望它仍然运行一次.
while [[ -n "${FILES%%,*}" ]]; do
FILE="${FILES%%,*}"
FILES="${FILES#*,}"
done
Run Code Online (Sandbox Code Playgroud)
是的,标准while循环ksh支持这个开箱即用:
while ...; do ...; done
Run Code Online (Sandbox Code Playgroud)
标准while循环之前和之后 都有代码块do.
每个块可以包含多个命令.通常,我们仅对第一个块使用单个命令,并且其退出状态确定循环是终止还是继续.
当我们使用多个命令时,只有最后一个命令的状态很重要.
while
echo do this always # replace with your code
[[ -n "${FILES%%,*}" ]]
do
FILE="${FILES%%,*}"
FILES="${FILES#*,}"
done
Run Code Online (Sandbox Code Playgroud)