步進(jìn)循環(huán)語句for
1.帶列表的for循環(huán)語句
基本語法:
for variable in {list}
do
statement1
statement2
done
例1:使用帶列表的for語句
#! /bin/bash
for var in 1 2 3 4 5 6 7 8
do
echo "the number is $var"
done
可將上面的代碼改造设江,得到相同的結(jié)果
#! /bin/bash
for var in {1..8}
do
echo "the number is $var"
done
例2:指定for語句的步長
基本語法:
for variable in {start..end..step}
do
statement1
statement2
..
done
#! /bin/bash
sum=0;
for i in {1..100..2}
do
let "sum+=i"
done
echo "the sum is $sum"
例3:使用ls命令的輸出結(jié)果作為for循環(huán)的執(zhí)行條件
#! /bin/bash
#${ls}可換成*全释,代表ls *
for file in $(ls)
do
echo "$file"
done
例4:使用for循環(huán)逐個處理腳本的參數(shù)
#! /bin/bash
echo "$*"
for arg in $*
do
echo "${arg}"
done
2.不帶列表的for循環(huán)語句
基本語法:
for variable
do
statement1
statement2
..
done
例5:使用不帶列表的for循環(huán)語句
#! /bin/bash
for arg
do
echo "$arg"
done
結(jié)果為
root@VM_16_3_centos for]$ sh for_arg.sh z x c v b n
z
x
c
v
b
n
3.類C風(fēng)格的for循環(huán)語句
基本語法:
for ((expression1;expression2;expression3))
do
statement1
statement2
..
done
例6:使用上述語法
#! /bin/bash
for (( i=1; i<5; i++))
do
echo "$i"
done
4.使用for循環(huán)語句處理數(shù)組
基本語法:
for variable in ${array[*]}
do
statement1
statement2
..
done
例7:處理數(shù)組
#! /bin/bash
array=(Monday Tuesday Wednesday Thursday Friday Saturday Sunday)
for day in ${array[*]}
do
echo $day
done
結(jié)果為
[root@VM_16_3_centos for]$ sh array.sh
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
Sunday
while循環(huán)語句
1.while語句的基本語法
基本語法:
while expression
do
statement1
statement2
..
done
當(dāng)expression表達(dá)式的值為0時玻墅,執(zhí)行循環(huán)內(nèi)的語句;否則退出while循環(huán)
例11:使用while循環(huán)來輸出數(shù)字1~9的平方
#! /bin/bash
i=1
while [ "$i" -lt 10 ]
do
let "square=i*i"
echo "$i*$i=$square"
let "i=i+1"
done
執(zhí)行結(jié)果:
[root@VM_16_3_centos for]$ sh while.sh
1*1=1
2*2=4
3*3=9
4*4=16
5*5=25
6*6=36
7*7=49
8*8=64
9*9=81
2.通過break語句跳出指定的層數(shù)
例12:給breakbreakbreak一個參數(shù)使其跳出指定的層數(shù)
for (( i=1; i<=9; i++ ))
do
for (( j=1; j<=i; j++ ))
do
let "product=i*j"
printf "$i*$j=$product"
# 主要進(jìn)行格式整理
if [[ "product" -gt 9 ]]
then
printf " "
else
printf " "
fi
if [[ "$j" -eq 5 ]]
then
break 2
fi
done
echo
done
結(jié)果為:
[root@VM_16_3_centos for]$ sh break.sh
1*1=1
2*1=2 2*2=4
3*1=3 3*2=6 3*3=9
4*1=4 4*2=8 4*3=12 4*4=16
5*1=5 5*2=10 5*3=15 5*4=20 5*5=25 [root@VM_16_3_centos for]$
乘法表中當(dāng)j 等于5的時候勾笆,break 2 語句跳出了兩層循環(huán)念逞,所以在for循環(huán)后的echo沒有執(zhí)行到。所以最后的命令提示行和腳本在一行中荆残。
含參數(shù)的continue語句
例13:使用含參數(shù)的continue語句
#! /bin/bash
for i in a b c d
do
echo -n "$i "
for j in `seq 10`
do
if [ $j -eq 5 ]
then
continue 2
fi
echo -n "$j "
done
echo
done
執(zhí)行結(jié)果:
[root@VM_16_3_centos for]$ sh continue.sh
a 1 2 3 4 b 1 2 3 4 c 1 2 3 4 d 1 2 3 4 [root@VM_16_3_centos for]$
當(dāng)執(zhí)行的到 j 等于5的時候,continue 2 跳過外層echo净当。