shell编程之循环语句

Posted 睡着的冰淇淋

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell编程之循环语句相关的知识,希望对你有一定的参考价值。

for循环

语法结构

1、列表循环

列表for循环:用于将一组命令循环执行已知的次数

基本格式:

for variable in list
do
command
command

done

或者

for variable in a b c
do
command
command
done

语法结构举例说明:

[root@localhost shell]# for i in 1..5;do echo $i;done
1
2
3
4
5
[root@localhost shell]# for i in 1..5;do echo -n $i;done
12345[root@localhost shell]#
[root@localhost shell]#
[root@localhost shell]# for i in 1 2 3 4 5;do echo $i;done
1
2
3
4
5
[root@localhost shell]#
[root@localhost shell]# for i in a b c;do echo $i;done
a
b
c
[root@localhost shell]# for i in `seq 5`;do echo $i;done
1
2
3
4
5

2、不带列表循环

不带列表的for循环执行时由用户指定的参数和参数的个数决定循环次数

基本格式:

for variable
do
command
command

done

语法结构举例说明:

[root@localhost shell]# vim for.sh
[root@localhost shell]# cat for.sh
#!/bin/bash
for var
do
echo $var
done
[root@localhost shell]# chmod +x for.sh
[root@localhost shell]# ./for.sh
[root@localhost shell]# ./for.sh a
a
[root@localhost shell]# ./for.sh a b
a
b
[root@localhost shell]# ./for.sh a b c
a
b
c


观察执行过程:
[root@localhost shell]# bash -x for.sh
[root@localhost shell]# bash -x for.sh a
+ for var in "$@"
+ echo a
a
[root@localhost shell]# bash -x for.sh a b
+ for var in "$@"
+ echo a
a
+ for var in "$@"
+ echo b
b

3、类C风格的for循环

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

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


expr1:定义变量并赋初值
expr2:决定是否进行循环(条件)
expr3:决定循环变量如何改变,决定循环什么时候退出

语法结构举例说明:

[root@localhost shell]# for ((i=1;i<=5;i++));do echo $i;done
1
2
3
4
5

循环控制

循环体: do....done之间的内容

continue:继续;表示循环体内的代码不执行,重新开始下一次循环

break:打断;马上停止执行循环,执行循环体后面的代码

exit:退出;直接跳出程序

continue:
[root@localhost shell]# >for.sh
[root@localhost shell]# vim for.sh
[root@localhost shell]# cat for.sh
#!/bin/bash
for i in 1..5
do
test $i -eq 2 && continue || touch /tmp/file$i
done
echo hello hahahah
[root@localhost shell]# ./for.sh
hello hahahah
[root@localhost shell]# ll /tmp/
总用量 0
-rw-r--r--. 1 root root 0 56 07:04 file1
-rw-r--r--. 1 root root 0 56 07:04 file3
-rw-r--r--. 1 root root 0 56 07:04 file4
-rw-r--r--. 1 root root 0 56 07:04 file5
drwxr-xr-x. 2 root root 53 56 07:03 shell


break:
[root@localhost shell]# > for.sh
[root@localhost shell]# vim for.sh
[root@localhost shell]# cat for.sh
#!/bin/bash
for i in 1..5
do
test $i -eq 2 && break || touch /tmp/file$i
done
echo hello hahahah
[root@localhost shell]# ./for.sh
hello hahahah
[root@localhost shell]# ll /tmp/
总用量 0
-rw-r--r--. 1 root root 0 56 07:00 file1
drwxr-xr-x. 2 root root 53 56 07:00 shell


exit:
[root@localhost shell]# >for.sh
[root@localhost shell]# vim for.sh
[root@localhost shell]# cat for.sh
#!/bin/bash
for i in 1..5
do
test $i -eq 2 && exit || touch /tmp/file$i
done
echo hello hahahah
[root@localhost shell]# ./for.sh
[root@localhost shell]# ll /tmp/
总用量 0
-rw-r--r--. 1 root root 0 56 07:06 file1
drwxr-xr-x. 2 root root 53 56 07:05 shell

举例说明

例1:计算1到100的奇数之和,方法不止一种

思路:

1. 定义一个变量来保存奇数的和  sum=0
2. 找出1-100的奇数,保存到另一个变量里 i
3. 从1-100中找出奇数后,再相加,然后将和赋值给sum变量
4. 遍历完毕后,将sum的值打印出来

脚本:

#!/bin/bash
#定义一个变量来保存奇数的和
sum=0
#打印1-100的奇数并且相加重新赋值给sum
for i in 1..100..2
do
sum=$[ $i + $sum ]
done
#打印1-100的奇数和
echo "1-100的奇数和为:$sum"


#!/bin/bash
#定义一个变量来保存奇数的和
sum=0
#打印1-100的奇数并且相加重新赋值给sum
for (( i=1;i<=100;i+=2))
do
let sum=sum+$i
或者
let sum=sum+i
或者
let sum=$sum+$i
done
#打印1-100的奇数和
echo "1-100的奇数和为:$sum"


#!/bin/bash
sum=0
for ((i=1;i<=100;i++))
do
if [ $[$i%2] -ne 0 ];then
let sum=$sum+$i
fi
或者
test $[$i%2] -ne 0 && let sum=$sum+$i
done
echo "1-100的奇数和是:$sum"


#!/bin/bash
sum=0
for ((i=1;i<=100;i++))
do
[ $[$i%2] -eq 0 ] && true || let sum=sum+$i
done
echo "1-100的奇数和是:$sum"


延伸:
true
: 真
false


#!/bin/bash
sum=0
for ((i=1;i<=100;i++))
do
if [ $[$i%2] -eq 0 ];then
continue
else
let sum=$sum+$i
fi
done
echo "1-100的奇数和为:$sum"


#!/bin/bash
sum=0
for ((i=1;i<=100;i++))
do
test $[Shell编程之循环语句

Shell编程之case语句与循环语句

shell编程之循环语句

Shell编程之循环语句

for / while / until 基础循环语句案例图解 shell编程之循环语句

shell脚本——编程之循环语句(forwhileuntil)