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 循環依次處理每個單詞,判斷當前這個單
詞是否為目前為止找到的最長的一個。當循環結束的時候,顯示出最長的單詞。