20.6 Shell 循环表达式 (从新手到菜鸟的Linux教程)
先来看一下三种循环的语法:
$ help for | head -n1
for: for NAME [in WORDS ... ] ; do COMMANDS; done
$ help while | head -n1
while: while COMMANDS; do COMMANDS; done
$ help until | head -n1
until: until COMMANDS; do COMMANDS; done
反正我觉得 until 相对于 while 是没什么用= =
for 循环的话 NAME
是依次取 WORDS
中空格分割的部分;相对与 c 系语言的 for (auto i = 0; i < n; ++i)
,在 shell 里一般是这样实现:
$ for i in `seq 1 5`
> do
> echo "Iteration $i."
> done
Iteration 1.
Iteration 2.
Iteration 3.
Iteration 4.
Iteration 5.
和 matlab 一样从 1 开始计数┑( ̄Д  ̄)┍
while 结构的话基本上就是用 shell 的方式写条件判断式,比如:
$ i=1
$ while [ $i -le 5 ]
> do
> echo "Iteration $i."
> i=`expr $i + 1`
> done
Iteration 1.
Iteration 2.
Iteration 3.
Iteration 4.
Iteration 5.
别忘了更新 i
= = 但是更新起来这么麻烦还不如直接用 for
在参考文档中看到一个很好的用法,就是把条件判断和命令结合在一起使用:
$ while read INPUT
> do
> echo "Input is $INPUT."
> done
ha!
Input is ha!.
foo
Input is foo.
bar
Input is bar.
$
中断输入是输入 ^D
(Ctrl-D) ,这是文件结束的脱字符表示。
顺便提一句 break 和 continue 也是可以用的,用法和其他语言是一样的,就是还可以接受一个数字参数,表示需要跳出几层/继续最近的第几层循环。