for、while循環、break、continue、exit

來源:https://blog.csdn.net/Powerful_Fylinux

for、while循環

for循環語法:for 變量名 in 條件; do …; donebash

示例一:打印1-100的數字並求和.net

#!/bin/bash
sum=0
for i in `seq 1 100`
do
	sum=$[$sum+$i]
	echo $i
done
echo $sum

seq1 2 10:打印結果1,3,5,7,9(2表示步長,打印結果間隔爲2)code

seq10 -2 1:打印結果10,8,6,4,2(倒序打印步長爲負)blog

seq -w 1 10:打印結果01,02,03,04,05,06,07,08,09,10(-w 表示等寬)get

示例二:打印指定目錄下的文件input

#!/bin/bash
cd /etc
for i in `ls /etc`
do
	if [ -f $i ]
	then
		ls -l $i
	fi
done

while循環語法:while 條件; do … ; doneit

示例一:平均1分鐘負載大於5時,發送郵件for循環

#!/bin/bash
while :
do
        load=`w|head -1|awk -F 'load average: ' '{print $2}'|cut -d . -f1`
        if [ $load -gt 5 ]
        then
                d=`date +%F_%T`
                top -nb1|mail -s "$d load is high: $load" asnfy@qq.com
        fi
        sleep 30
done

示例二:判斷輸入內容是否爲空或包含非數字class

#!/bin/bash
while :
do
    read -p "Please input a number: " n
    if [ -z "$n" ]
    then
		echo "you need input sth."
		continue
    fi
    n1=`echo $n|sed 's/[0-9]//g'`
    if [ -n "$n1" ]
    then
		echo "you just only input numbers."
        continue
    fi
    break
done
echo "you input number is $n"

#若是輸入的內容爲空爲包含非數字,continue跳出從新執行,不然break結束循環

補充:

當使用for遍歷一個文件中的每行內容時(for i in `cat test`),若是某行中有一個或多個空格,這行的內容就會被當作兩行或多行打印,爲了不這種狀況能夠使用while來循環輸出文件中的每行內容

示例:

#!/bin/bash
cat test.txt|while read i
do
	echo $i
done

#使用while遍歷文件中的內容,即便某行有空格,也會被正常打印

break、continue、exit

break:直接結束循環

#!/bin/bash
for i in `seq 1 5`
do
	echo "第一次輸出:$i"
	if(($i==3))
	then
		break
	fi
	echo "第二次輸出:$i"
done
echo "循環結束"

執行結果:

[root@linux ~]# sh a.sh 
第一次輸出:1
第二次輸出:1
第一次輸出:2
第二次輸出:2
第一次輸出:3
循環結束

continue:忽略後面的代碼,重新開始循環

#!/bin/bash
for i in `seq 1 5`
do
	echo "第一次輸出:$i"
	if(($i==3))
	then
		continue
	fi
	echo "第二次輸出:$i"
done
echo "循環結束"

執行結果:

[root@linux ~]# sh a.sh 
第一次輸出:1
第二次輸出:1
第一次輸出:2
第二次輸出:2
第一次輸出:3
第一次輸出:4
第二次輸出:4
第一次輸出:5
第二次輸出:5
循環結束

注意:循環支持嵌套,若是一個循環中嵌套了多個循環,break或continue只能做用於所在的某個循環中

exit:直接退出腳本

#!/bin/bash
for i in `seq 1 5`
do
	echo "第一次輸出:$i"
	if(($i==3))
	then
		exit	
	fi
	echo "第二次輸出:$i"
done
echo "循環結束"

執行結果:

[root@linux ~]# sh a.sh 
第一次輸出:1
第二次輸出:1
第一次輸出:2
第二次輸出:2
第一次輸出:3

#循環外的echo語句沒有輸出,當腳本中遇到exit,會直接退出,後面全部內容都再也不執行

補充: 當腳本遇到exit直接退出後,echo $? 查看執行結果會顯示0,表示執行成功,因此通常使用exit會在後面加上指定的非0數字,方便調用結果(好比:exit 5)

相關文章
相關標籤/搜索