for: 传统 shell 格式
这里的 variable 是一个变量的名字,这个变量在循环执行期间会增加,words 是一个可选
的条目列表,其值会按顺序赋值给 variable,commands 是在每次循环迭代中要执行的命令。
在命令行中 for 命令是很有用的。我们可以很容易的说明它是如何工作的:
for 命令真正强大的功能是我们可以通过许多有趣的方式创建 words 列表。例如,通过花括
号展开:
for i in {A..D}; do echo $i; done
A
B
C
D
or pathname expansion:
或者路径名展开:
$ for i in distros*.txt; do echo $i; done
distros-by-date.txt
678distros-dates.txt
distros-key-names.txt
distros-key-vernums.txt
distros-names.txt
distros.txt
distros-vernums.txt
distros-versions.txt
or command substitution:
或者命令替换:
#!/bin/bash
# longest-word : find longest string in a file
while [[ -n $1 ]]; do
if [[ -r $1 ]]; then
max_word=
max_len=0
for i in $(strings $1); do
len=$(echo $i | wc -c)
if (( len > max_len )); then
max_len=$len
max_word=$i
fi
done
echo "$1: '$max_word' ($max_len characters)"
fi
shift
done
在这个示例中,我们要在一个文件中查找最长的字符串。当在命令行中给出一个或多个文
件名的时候,该程序会使用 strings 程序(其包含在 GNU binutils 包中),为每一个文件产生
679一个可读的文本格式的“words”列表。然后这个 for 循环依次处理每个单词,判断当前这个单
词是否为目前为止找到的最长的一个。当循环结束的时候,显示出最长的单词。