循环语句(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

posted @ 2022-04-21 17:49    阅读(78)  评论(0编辑  收藏  举报