1. 程式人生 > 其它 >迴圈語句(study06)

迴圈語句(study06)

六、迴圈語句

1.for迴圈語句

(一)for迴圈語法結構

(1)列表迴圈

用於將一組命令執行已知的次數

  • 基本語法格式

for variable in {list}
do
command
command
...
done
或者
for variable in a b c
do
command
command
done

  • 舉例說明

1.
#!/bin/bash

for i in {1..5}
do
echo $i
done

2.加入步長
#!/bin/bash

for i in {0..10..2} 從0開始每隔2位列印
do
echo $i
done

3.列印1-10
for i in $(seq 10);do echo $i;done

  • 注意:

    seq的步長在中間

    seq 5 2 11

    表示:從5開始每隔2位列印,直到小於等於11

    seq 10 -3 2

    表示:從10開始,每次-3後列印,直到大於等於2

(2)不帶列表迴圈

執行時由使用者指定引數和引數的個數

  • 基本語法格式

for variable
do
command
command
...
done

  • 舉例說明

1.
[root@shell test]# cat for3.sh
#!/bin/bash

for i
do
echo "hello"
done
[root@shell test]# ./for3.sh
[root@shell test]#
[root@shell test]# ./for3.sh a
hello
[root@shell test]# ./for3.sh a bc
hello
hello
[root@shell test]# ./for3.sh a b c 1
hello
hello
hello
hello

(3)類C風格for迴圈
  • 基本語法結構

for (( expr1;expr2;expr3 ))
do
command
command
...
done

  • 舉例說明

for (( i=1;i<=5;i++ ))
do
echo $i
done

(二)迴圈控制語句

迴圈體:do...done之間的內容

  • continue:繼續,表示迴圈體內下面的程式碼不執行,重新開始下一次迴圈

  • break:打斷,馬上停止執行本次迴圈,執行迴圈體外後面的程式碼

  • exit:表示直接跳出程式

(三)應用案例

①求1~100相加的值

1.
#!/bin/bash

sum=0
for (( i=1;i<=100;i++ ))
do
let sum=$sum+$i
done
echo $sum

2.
#!/bin/bash

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

3.
#!/bin/bash

sum=0
for (( i=1;i<=100;i++ ))
do
sum=$[$sum+$i]
done
echo $sum

⑤判斷所輸入的數是否為質數

#!/bin/bash

read -p "請輸入一個正整數:" num
[ $num -eq 1 ] && echo "$num不是質數" && exit
[ $num -eq 2 ] && echo "$num是質數" && exit
for i in `seq 2 $(($num-1))`
do
[ $[$num%$i] -eq 0 ] && echo "$num不是質數" && exit
done
echo "$num是質數"

2.while迴圈語句

特點:條件為真就進入迴圈,條件為假就退出迴圈

(一)while迴圈語法結構

while 表示式
do
command...
done

while [ 1 -eq 1 ] 或者 (( 1 > 2 ))
do
command
command
...
done

迴圈列印1-5數字

i=1;while [ $i -le 5 ];do echo $i;let i++;done

計算1-50的偶數和

 

#!/bin/bash

sum=0
i=2
while (( $i <= 50 ))
do
sum=$(($i+$sum))
let i+=2
done
echo $sum

3.until迴圈語句

特點:條件為假就進入迴圈,條件為真就退出迴圈

(一)until語法結構

until expression [ 1 -eq 1 ] (( 1 >= 1 ))
do
command
command
...
done

列印1*5數字

i=1;until (( $i > 5 ));do echo $i;let i++;done