for循环是Linux shell 中最常用的结构。for 循环有三种结构:一种结构是列表for循环;第二种结构是不带列表for循环;第三种结构是类C风格的for循环。上篇博文讲解了列表for循环,本篇博文重点看不带列表for循环。不带列表for循环执行时,由用户指定参数和参数的个数。
不带列表for循环基本格式
for variable
do
command
command
...
done
其中,do 和 done 之间的命令成为循环体,shell 会自动将命令行键入的所有参数依次组织成列表,每次将一个命令行键入的参数显示给用户,直至所有的命令行中的参数都显示给用户。这种结构的for循环和下面带列表的for循环的结构功能完全一致:
for variable in "$*"
do
command
command
...
done
不带列表的for循环同样通过命令行来传递参数列表,上篇博文的ex8 for_ex8.sh 利用不带列表for循环改写脚本
[zhangqi@localhost shellscript]$ cat for_ex8_1.sh
#!/bin/bash
echo "number of arguments is $#"
echo "What you input is :"
#使用命令打印数组
for argument
do
echo "$argument "
done
[zhangqi@localhost shellscript]$ sh for_ex8_1.sh 2 linux shell
number of arguments is 3
What you input is :
2
linux
shell
[zhangqi@localhost shellscript]$
脚本for_ex8_1.sh 与 for_ex8.sh 的执行结果相同,不带列表for循环结构比带列表for循环结构简洁易读,但其只可从命令行来传递参数。所以,这种方式在shell编程中使用相对较少。