shell之for循環-while循環-break-continue-exit

for循環:

語法:bash

for 變量名 in 條件spa

docode

commandinput

doneit

#for循壞的條件集合,以空格做爲分隔符,分割每個條件。for循環

 

例子:class

#!/bin/bash
#求和1之100
sum=0
for in in `seq 1 100`
do 
sum=$[$sum+$i]
done
echo $sum
#!/bin/bash
#查找/etc/目錄下的目錄,並長格式顯示
cd /etc
for i in `ls /etc/`
do
[ -d $i ] && ls -d $i
done

 

while循環:

語法:awk

while 循環條件監控

 do變量

command

done

#當循環條件爲 1或true或 「:」,表示死循環。

 

例子:

#!/bin/bash
#每30S監控系統負載,當大於10,發送郵件,假設郵件腳本在/usr/local/sbin/mail.py
while true
do
load=`w|head -1|awk -F 'load average: ' '{print $2}'|cut -d "." -f 1`
[ $load -gt 10 ] && /usr/local/sbin/mail.py "load high" "$load"
sleep 30 
done
#!/bin/bash
#讓用戶輸入數字,檢測若沒輸入字符,提示用戶輸入;若用戶輸入非數字,提示用戶輸入數字;直至輸入數字後退出循壞
while :
do
    read -p "Please input a number: " n
    if [ -z "$n" ]
    then
        echo "you need input number"
        continue
#執行continue後,跳出本次循環,下面不執行,進行下一次循環
    fi
    n1=`echo $n|sed 's/[0-9]//g'`
    if [ -n "$n1" ]
    then
        echo "you need input numbers."
        continue
    fi
    break
#執行break後,退出此while循環
done
echo $n

 

break跳出循環:

經常使用於循環語句中,跳出整個循環,結束循環

例子:

#!/bin/bash
for i in `seq 1 5`
do
  if [ $i -eq 3 ]  
  then
      break
  else
      echo $i
  fi
done
echo aaaaa

結果:

#sh break.sh
++ seq 1 5
+ for i in '`seq 1 5`'
+ '[' 1 -eq 3 ']'
+ echo 1
1
+ for i in '`seq 1 5`'
+ '[' 2 -eq 3 ']'
+ echo 2
2
+ for i in '`seq 1 5`'
+ '[' 3 -eq 3 ']'
+ break
+ echo aaaaa
aaaaa

 

continue結束本次循環:

經常使用於循環語句中,不執行continue後面語句,直接從新開始下一次循壞

#!/bin/bash
for i in `seq 1 5`
do
  if [ $i -eq 3 ]
  then
      continue
  else
      echo $i
  fi
done
echo aaaaa

結果:

#sh continue.sh
++ seq 1 5
+ for i in '`seq 1 5`'
+ '[' 1 -eq 3 ']'
+ echo 1
1
+ for i in '`seq 1 5`'
+ '[' 2 -eq 3 ']'
+ echo 2
2
+ for i in '`seq 1 5`'
+ '[' 3 -eq 3 ']'
+ continue
+ for i in '`seq 1 5`'
+ '[' 4 -eq 3 ']'
+ echo 4
4
+ for i in '`seq 1 5`'
+ '[' 5 -eq 3 ']'
+ echo 5
5
+ echo aaaaa
aaaaa

 

exit退出整個腳本:

用於腳本中時,直接退出腳本,可定義退出時的返回值

#!/bin/bash
for i in `seq 1 5`
do
  if [ $i -eq 3 ]
  then
      exit 2
  else
      echo $i
  fi
done
echo aaaaa

結果:

#sh exit.sh
++ seq 1 5
+ for i in '`seq 1 5`'
+ '[' 1 -eq 3 ']'
+ echo 1
1
+ for i in '`seq 1 5`'
+ '[' 2 -eq 3 ']'
+ echo 2
2
+ for i in '`seq 1 5`'
+ '[' 3 -eq 3 ']'
+ exit 2


#echo $?
2
相關文章
相關標籤/搜索