shell脚本系列:两种风格的for循环

C语言风格

格式

for((exp1; exp2; exp3))
do
    statements
done

示例

#!/bin/bash

sum=0

for ((i=1; i<=100; i++))
do
    ((sum += i))
done

echo "The sum is: $sum"

修改“从 1 加到 100 的和”的代码,省略 exp1:

#!/bin/bash

sum=0
i=1

for ((; i<=100; i++))
do
    ((sum += i))
done

echo "The sum is: $sum"

省略 exp2,就没有了判断条件,如果不作其他处理就会成为死循环,我们可以在循环体内部使用 break 关键字强制结束循环:

#!/bin/bash

sum=0

for ((i=1; ; i++))
do
    if(( i>100 )); then
        break
    fi
    ((sum += i))
done

echo "The sum is: $sum"

省略了 exp3,就不会修改 exp2 中的变量,这时可在循环体中加入修改变量的语句。例如:

#!/bin/bash

sum=0

for ((i=1; i<=100; ))
do
    ((sum += i))
    ((i++))
done

echo "The sum is: $sum"

最后给大家看一个更加极端的例子,同时省略三个表达式:

#!/bin/bash

sum=0
i=0

for (( ; ; ))
do
     if(( i>100 )); then
        break
    fi
    ((sum += i))
    ((i++))
done

echo "The sum is: $sum"

Python风格

格式

for variable in value_list
do
    statements
done

示例

#!/bin/bash

sum=0

for n in 1 2 3 4 5 6
do
    echo $n
     ((sum+=n))
done

echo "The sum is "$sum

直接给出具体的值:

#!/bin/bash

for str in "杰克" "汤姆" "爱丽丝" "亨瑞"
do
    echo $str
done

给出一个取值范围:

#!/bin/bash

sum=0

for n in {1..100}
do
    ((sum+=n))
done

echo $sum
#!/bin/bash

for c in {A..z}
do
    printf "%c" $c
done

使用命令的执行结果:

#!/bin/bash

sum=0

for n in $(seq 2 2 100)
do
    ((sum+=n))
done

echo $sum
#!/bin/bash

for filename in $(ls *.sh)
do
    echo $filename
done

使用 Shell 通配符:

#!/bin/bash

for filename in *.sh
do
    echo $filename
done

使用特殊变量:

#!/bin/bash

function func() {
    for str in $@
    do
        echo $str
    done
}

func 小刘 小张 小宋
posted @ 2020-08-20 23:29  SimonLiu91  阅读(265)  评论(0编辑  收藏  举报