【從0到1 Shell】(六)循環結構

步進循環語句for

1.帶列表的forfor循環語句

基本語法:

for variable in {list}
do 
	statement1
	statement2
	..
done

例1:使用帶列表的forfor語句

#! /bin/bash

for var in 1 2 3 4 5 6 7 8
do
	echo "the number is $var"
done

執行結果:
在這裏插入圖片描述
可以將上述代碼進行改造,得到同樣的效果:

#! /bin/bash

for var in {1..8}
do
	echo "the number is $var"
done

例2:指定forfor語句的步長
基本語法:

for variable in {start..end..step}
do
	statement1
	statement2
	..
done

使用該語法:

#! /bin/bash

sum=0;
for i in {1..100..2}
do
	let "sum+=i"
done
echo "the sum is $sum"

執行結果:
在這裏插入圖片描述

例3:使用lsls命令的輸出結果作爲forfor循環的執行條件

#! /bin/bash

#${ls}可換成*,代表ls *
for file in $(ls)
do
	echo "$file"
done

執行結果:
在這裏插入圖片描述

例4:使用forfor循環逐個處理腳本的參數

#! /bin/bash

echo "$*"
for arg in $*
do
	echo "${arg}"
done

執行結果:
在這裏插入圖片描述

2.不帶列表的for循環語句

基本語法:

for variable
do
	statement1
	statement2
	..
done

例5:使用不帶列表的forfor循環語句

#! /bin/bash

for arg
do
	echo "$arg"
done

執行結果:
在這裏插入圖片描述

3.類C風格的for循環語句

基本語法:

for ((expression1;expression2;expression3))
do
	statement1
	statement2
	..
done

例6:使用上述語法

#! /bin/bash

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

執行結果:
在這裏插入圖片描述
省略條件的死循環:

for ((;;))
4.使用for循環語句處理數組

基本語法:

for variable in ${array[*]}
do
	statement1
	statement2
	..
done

例7:處理數組

#! /bin/bash

array=(Monday Tuesday Wednesday Thursday Friday Saturday Sunday)
for day in ${array[*]}
do
	echo $day
done

執行結果:
在這裏插入圖片描述

until循環語句

1.until語句的基本語法
until expression
do
	statement1
	statement2
	..
done

expressionexpression表達式的值不爲0時,將執行dododonedone之間的語句;當expressionexpression表達式的值爲0時,將退出untiluntil循環結構,繼續執行donedone語句後面的其它語句

例8:使用untiluntil語句

#! /bin/bash

i=1
#當i的值小於9時執行循環
#注意此處兩個中括號不能分隔
until [[ "$i" -gt 9 ]]
do
	let "square=i*i"
	echo "$i*$i=$square"
	let "i=i+1"
done

執行結果:
在這裏插入圖片描述

2.利用until語句批量增加用戶

例9:批量增加用戶

#! /bin/bash

i=1
until [ "$i" -eq 21 ]
do
	#執行useradd命令添加用戶
	useradd user$i
	#修改用戶密碼
	echo "password" | passwd --stdin user$i > /dev/null
	#ubuntu下更改成echo "user$i":"password" | chpasswd
	let "i++"
done

執行結果:
在這裏插入圖片描述

例10:批量刪除用戶:

#! /bin/bash

i=1 
until [ "$i" -eq 21 ]
do
	userdel -r user$i
	let "i++"
done

while循環語句

1.while語句的基本語法

基本語法:

while expression
do
	statement1
	statement2
	..
done

expressionexpression表達式的值爲0時,執行循環內的語句;否則退出whilewhile循環

例11:使用whilewhile循環來輸出數字1~9的平方

#! /bin/bash

i=1
while [ "$i" -lt 10 ]
do
	let "square=i*i"
	echo "$i*$i=$square"
	let "i=i+1"
done

執行結果:
在這裏插入圖片描述

通過break語句跳出指定的層數

例12:給breakbreak一個參數使其跳出指定的層數

#! /bin/bash

for (( i=1; i<=9; i++ ))
do
	for (( j=1; j<=i; j++ ))
	do
		let "product=i*j"
		printf "$i*$j=$product"
		if [[ "product" -gt 9 ]]
		then
			printf "    ”
		else
			printf "     "
		fi
		if [[ "$j" -eq 5 ]]
		then
			break 2
		fi
	done
	echo
done

執行結果:
在這裏插入圖片描述

乘法表的最後一行與命令提示符位於同一行,這是因爲滿足j=5j=5後執行breakbreak語句,跳過兩行【跳過echoecho】,因此同行

含參數的continue語句

例13:使用含參數的continuecontinue語句

#! /bin/bash

for i in a b c d
do
	echo -n "$i "
	for j in `seq 10`
	do
		if [ $j -eq 5 ]
		then
			continue 2
		fi
		echo -n "$j"
	done
	echo
done

執行結果:
在這裏插入圖片描述

當內層循環到第5次時,變量jj的值爲5,執行continuecontinue 2語句,跳過外層的echoecho

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