shell编程----for语句

目录标题


for语句

for循环的两种形式:

第一种:c语言风格的for循环

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

  说明:exp1、exp2、exp3是三个表达式,其中exp2是判断条件,for循环根据exp2的结果来决定是否继续下一次循环;statements是循环体语句,可以有一条,也可以有多条;do和done是shell中的关键字。
  运行过程:先执行exp1再执行exp2,如果它的判断结果是成立的,则执行循环体中的语句,否则结束整个for循环;执行万循环体之后再执行exp3,重复执行步骤2)和3),直到exp2的判断结果不成立,就结束循环。上面的步骤中,2)和3)合并在一起算作一次循环,会重复执行,for语句的主要作用就是不断执行步骤2)和3)。
  exp1仅在第一次循环时执行,以后都不会再执行,可以认为这是一个初始化语句。exp2一般是一个关系表达式,决定了是否还要继续下次循环,成为“循环条件”。exp3很多情况下是一个带有自增或自减运算的表达式,以使循环条件逐渐变得”不成立”。for循环中exp1(初始化语句)、exp2(判断条件)和exp3(自增或自减)都是可选项,都可以省略(但分号;必须保留)。

#!/bin/bash
sum=0
for ((i=1;i<=100;i++))
do
	((sum+=i))
done
echo "sum=$sum"

结果:
sum=5050

#!/bin/bash
sum=0
for ((i=1; ;i++))
do
	if ((i>100));then
		break
	fi
	((sum+=i))
done
echo "the sum is ;$sum"

结果:
the sum is ;5050

#!/bin/bash
sum=0
i=1
for ((; ;))
do
	if ((i>100));then
		break
	fi
	((sum+=i))
	((i++))
done
echo "the sum is:$sum"

结果:
the sum is:5050

第二种for的表达方式

# python风格的for in 循环的用法:
for variable in value_list
do
 statements
done

  variable表示变量,value_list表示取值列表,in是shell中的关键字。
  运行过程:每次循环都会从value_list中取出一个值赋给变量variable,然后进入循环体(do和done之间的部分),执行循环体中的statements。直到取完value_list中的所有值,循环就结束了。

#!/bin/bash
sum=0
for n in 1 2 3 4 5 6
do
	echo $n
	((sum+=n))
done
echo "the sum is $sum"

结果:
1
2
3
4
5
6
the sum is 21

#!/bin/bash
# 给出一个取值范围{1..100}
# 注意:中间用两个点号链接
# start:起始值 end:终止值
# 这种形式只支持数字和字母

sum=0
for n in {1..100}
do
	((sum+=n))
done
echo "sum=$sum"

结果:
sum=5050

#!/bin/bash
for c in {A..z}
do
	printf "%c"$c
done

结果:
ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz

#!/bin/bash
# 根据命令的执行结果
# 反引号``或者$()
# seq是一个linux命令用来产生某个范围内的整数并且可以设置步长
sum=0
for n in $(seq 2 2 10)
do 
	((sum+=n))
done
echo "sum=$sum"

结果:
sum=30

#!/bin/bash
for filename in $(ls *.sh)
do
	echo $filename
done

结果:
01.sh
02.sh
03.sh
04.sh
05.sh
06.sh
07.sh
08.sh

#!/bin/bash
# 可以使用通配符

for filename in *.sh
do
	echo $filename
done

结果:
01.sh
02.sh
03.sh
04.sh
05.sh
06.sh
07.sh
08.sh
09.sh

#!/bin/bash

# 使用特殊符号
# $@表示参数列表中的所有参数

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

func c++ python ruby shell

结果:
c++
python
ruby
shell


# 使用特殊符号
# $@表示参数列表中的所有参数

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

func c++ python ruby shell

结果:
c++
python
ruby
shell

发布了106 篇原创文章 · 获赞 1 · 访问量 2352

猜你喜欢

转载自blog.csdn.net/weixin_43384009/article/details/104316739