shell中的for循環

1. C語言風格的for循環

格式:

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

運行過程:

  1. 先執行exp1;
  2. 再執行exp2,如果它的判斷結果成立,則執行循化體中的語句,否則結束整個for循環;
  3. 執行完循環體後再執行exp3;
  4. 重複執行步驟2和3,直到exp2的判斷結果不成立,就結束循環;
  5. 上面的步驟中,第二步和第三步合併在一起算一次循環,會重複執行。for語句的主要作用就是不斷執行步驟2和3

注意:
1.exp1僅在第一次循環時執行,以後都不會再執行。可以認爲這是一個初始化語句
2.exp2一般是一個關係表達式,決定了是否有還要繼續下次循環,稱爲“循化條件”
3.exp3很多情況下是一個帶有自增或自減運算的表達式,以使循環條件逐漸變得“不成立”
4.for循環中的exp1、exp2、exp3都是可選項,都可以省略,但分號必須保留!

for ((初始化語句;判斷條件;自增或自減))

2. C語言風格for循環的例子

例1:計算1到100的和

#!/bin/bash

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

在這裏插入圖片描述

例2:省略初始化條件

#!/bin/bash
i=1				#把初始化條件提前寫在for語句前面	
sum=0
for ((;i<=100;i++))	#即使省略了exp1,它後面的分號仍然需要保留
do
	((sum += i))
done
echo "The sum is: $sum"

在這裏插入圖片描述

例3:省略判斷條件

#!/bin/bash

sum=0
for ((i=1;;i++))		#分號不能省略
do
	if ((i > 100));then	#把判斷條件寫成if語句在for循環體中
		break
	fi
	((sum += i))
done
echo "The sum is: $sum"

在這裏插入圖片描述

例4:省略自增或自減

#!/bin/bash

sum=0
for ((i=1;i<=100;))
do
	((sum += i))
	((i++))		#把自增或自減寫進循環體中
done
echo "The sum is: $sum"

在這裏插入圖片描述

例5:全部省略

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

在這裏插入圖片描述

3. python風格的for in循環

格式:

for variable in value_list
do
	statements
done

其中variable表示變量,value_list表示取值列表

循環過程:
每次循環都會從value_list中取出一個值賦給變量variable,然後進入循環體,執行循環中的statements,直到取完value_list中的所有值,循環結束

4. python風格的for in循環的例子

例1: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"

在這裏插入圖片描述

例2:value_list:給出一個取值範圍
value_list:給出一個取值範圍 {start. .end}
start:起始值 end:終止值
注意:中間用兩個點號相連
注意:這種形式只支持數字和字母

#!/bin/bash
#value_list:給出一個取值範圍 {start..end}
# start:起始值 end:終止值
# 注意:中間用兩個點相連
# 注意:這種形式只支持數字和字母

sum=0
for i in {1..100}
do
	((sum+=i))
done

echo "The sum is $sum"

在這裏插入圖片描述

例3:value_list:給出一個取值範圍

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

在這裏插入圖片描述

例4:value_list:根據命令的執行結果
獲取命令執行結果:反引號`` 或者$( )

#!/bin/bash
# 根據命令的執行結果
# 獲取命令執行結果:反引號`` 或者$()

# 計算1到100之間所有偶數的和

sum=0
for i in $(seq 2 2 100)	#seq是一個linux命令 用來產生某個範圍內的整數 並且可以設置步長
do
	((sum+=i))
done
echo $sum

在這裏插入圖片描述

例5:value_list:命令的結果

#!/bin/bash
#value_list:命令的結果
for filename in $(ls *.sh)
do
	echo $filename
done

在這裏插入圖片描述

例6:value_list:可以使用通配符

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

for filename in *.sh
do
	echo $filename
done

在這裏插入圖片描述

例7:value_list:可以使用特殊符號

$@ 表示參數列表中所有參數

#!/bin/bash
# 可以使用特殊符號
# $@ 表示參數列表中所有參數

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

func C++ Jave Python shell c#

在這裏插入圖片描述

例8:value_list可以省略

#!/bin/bash
# 可以使用特殊符號
# $@ 表示參數列表中所有參數

function func() {
	for str	             #這裏的value_list可以省略
	do 
		echo $str
	done
}

func C++ Jave Python shell c#

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章