格式:for name [ [ in [ word ... ] ] ; ] do list ; done

for 变量名 in 取值列表; do 
    命令
done
#!/bin/bash
for i in {1..3}; do 
    echo $i
done
# bash test.sh 
1
2
3

for 的语法也可以这么写:

#!/bin/bash
for i in "$@"; {	# $@是将位置参数作为单个来处理
    echo $i
}
# bash test.sh 1 2 3
1
2
3

默认 for 循环的取值列表是以空白符分隔,也就是第一章讲系统变量里的$IFS:

#!/bin/bash
for i in 12 34; do 
    echo $i
done
# bash test.sh 
12
34

如果想指定分隔符,可以重新赋值$IFS 变量:

#!/bin/bash 
OLD_IFS=$IFS 
IFS=":"
for i in $(head -1 /etc/passwd); do 
    echo $i
done
IFS=$OLD_IFS	# 恢复默认值
# bash test.sh
root 
x
0
0
root
/root
/bin/bash

for 循环还有一种C 语言风格的语法,常用于计数、打印数字序列:
for (( expr1 ; expr2 ; expr3 )) ; do list ; done

#!/bin/bash
for ((i=1;i<=5;i++)); do # 也可以i-- echo $i done ``` ```java #!/bin/bash for ip in 192.168.1.{1..254}; do if ping -c 1 $ip>/dev/null; then 
        echo "$ip OK."
    else
        echo "$ip NO!"
    fi 
done
#!/bin/bash
URL="www.baidu.com www.sina.com www.jd.com" 
for url in $URL; do
    HTTP_CODE=$(curl -o /dev/null -s -w %{http_code} http://$url) 
    if [ $HTTP_CODE -eq 200 -o $HTTP_CODE -eq 301 ]; then
        echo "$url OK." 
    else
        echo "$url NO!"
    fi 
done