1. 程式人生 > >for循環, while循環,break,continue,exit的用法

for循環, while循環,break,continue,exit的用法

shell

for循環

語法:for 變量名 in 條件; do …; done
案例1,求和
#!/bin/bash
sum=0
for i in seq 1 100
do
sum=$[$sum+$i]
echo $i
done
echo $sum
這是計算從1到100總和的腳本。
其中sum變量賦一個值為0,[$sum+$i]是賦值語句,做加減法,也是核心語句。這裏中括號不用加空格

案例2,文件循環
文件列表循環
#!/bin/bash
cd /etc/
for a in ls /etc/
do
if [ -d $a ]
then
ls -d $a
fi
done
這是講/etc/目錄下的目錄都查詢一遍

有時候我們會遇到這種情況,在目錄下有些文件名中有空格或者回車鍵,這樣在寫腳本的時候
for i in ‘ls ./’;do echo $i ; done
會出現以分隔符分割的文件名

while循環

語法 while 條件; do … ; done
案例1
#!/bin/bash
while :
do
load=w|head -1|awk -F ‘load average: ‘ ‘{print $2}‘|cut -d. -f1
if [ $load -gt 10 ]
then
/usr/lib/zabbix/alertscripts/mail.py [email protected] "load higt" "$load"

fi
sleep 30
done
這是一個監控腳本,這個腳本是每隔半分鐘檢查一下系統的負載,大於10的時候就發郵件給收件人。
其中while :是死循環的意思
load=w|head -1|awk -F ‘load average: ‘ ‘{print $2}‘|cut -d. -f1是將系統的負載賦值到load這個變量中。
它的意思是w,查看系統負載
head -1選取第一行
awk -F ‘load average: ‘ ‘{print $2}‘以load average:為分隔符,並且打印第二段
cut -d. -f1然後再以.為分隔符,打印第一段
/usr/lib/zabbix/alertscripts/mail.py [email protected] "load higt" "$load"發送郵件,第一段裏面寫主題,第二段中寫內容。
sleep 30 間隔30秒

案例2
#!/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 $n
這是讓用戶輸入東西的腳本,如果輸入不是系統想要的,那他就會不停的讓你輸入。這個腳本的重點是continue(繼續重新執行)和break(退出腳本循環)

break跳出循環

#!/bin/bash
for i in seq 1 5
do
echo $i
if [ $i -eq 3 ](在這裏,如果我們比較數字的話,我們需要用-eq去比較,如果是字符串,我們要用==去比較)
then
break
fi
echo $i
done
echo aaaaa
這個腳本的意思是如果當$i等於3的時候,就打印出aaaaa。
[root@linletao-001 shell]# sh -x break.sh
++ seq 1 5

  • for i in ‘seq 1 5
  • echo 1
    1
  • ‘[‘ 1 -eq 3 ‘]‘
  • echo 1
    1
  • for i in ‘seq 1 5
  • echo 2
    2
  • ‘[‘ 2 -eq 3 ‘]‘
  • echo 2
    2
  • for i in ‘seq 1 5
  • echo 3
    3
  • ‘[‘ 3 -eq 3 ‘]‘
  • break
  • echo aaaaa
    aaaaa
    當匹配到3的時候,與條件相等。break跳出來,打印aaaaa

continue結束本次循環

忽略continue之下的代碼,直接進行下一次循環
#!/bin/bash
for i in seq 1 5
do
echo $i
if [ $i == 3 ]
then
continue
fi
echo $i
done
echo $i
[root@linletao-001 shell]# sh break.sh
1
1
2
2
3
4
4
5
5
aaaaa
在匹配了條件後,它依然往下進行,這就是continux的作用。

exit退出整個腳本

#!/bin/bash
for i in seq 1 5
do
echo $i
if [ $i == 3 ]
then
exit(直接退出這個腳本)
fi
echo $i
done
echo $i
[root@linletao-001 shell]# sh exit.sh
1
1
2
2
3
滿足條件見後自動退出,不再向下執行

for循環, while循環,break,continue,exit的用法