20.10 for循環 while循環 break跳出循環

 擴展
select用法 http://www.apelearn.com/bbs/thread-7950-1-1.html 

for循環

vim for.sh
#! /bin/bash


for i in 'seq 1 5'; do
      echo $i
done

腳本中的seq1 5表示從1到5的一個序列。

[root@aminglinux-128 ~]# sh for.sh
seq 1 5

for循環的基本結構格式:

for  變量名 in 循環的條件;do

         command

done

這裏的“循環的條件”可以是一組數字或者字符串(用一個或者多個空格隔開),也可以是一條命令的執行結果。

[root@aminglinux-128 ~]# for i in 1 2 3 a b; do echo $i; done
1
2
3
a
b

‘’循環的條件‘’還可以引用系統命令的執行結果(如seq 1 5),但必須用反引號括起來。

[root@aminglinux-128 ~]# for file in 'ls';do echo $file; done
ls

while循環

while用來編寫死循環的腳本,用來監控某項服務。

while 條件;do

             command

done

示例如下

vim while.sh
#! /bin/bash


a=5
while [ $a -ge 1 ]; do
      echo $a
      a=$[$a-1]
done

腳本執行結果

[root@aminglinux-128 ~]# sh while.sh
5
4
3
2
1

可以用冒號代替循環條件,這樣可以做到死循環。

while :;do

             command

done

shell腳本中的函數

shell腳本中的函數就是先把一段代碼整理到一個小單元中,並給這個小單元命名,當用到這段代碼時直接調用這個小單元名字即可。有時腳本中的某段代碼總是重複使用,如果寫成函數,每次用到時直接用函數名代替即可。

寫一個帶有函數功能的shell腳本。

vim func.sh
#! /bin/bash
function sum()
{

  sum=$[$1+$2]
  echo $sum
}

sum $1 $2

該腳本的執行結果

[root@aminglinux-128 ~]# sh func.sh 1 2
3

func.sh中的sum()爲自定義的函數。在shell腳本中函數的格式如下:

function 函數名()

{

        command1

        command2

}

在shell腳本中,函數一定要寫在最前面,不能出現在中間或者最後。因爲函數是要被調用的,如果還沒有出現就被調用,肯定會出錯。

shell腳本的中斷和繼續

break

break用在循環中,不管是for或者while都可以。在腳本中使用它,表示退出該層循環。它的上層循環不受影響。

[root@aminglinux-128 ~]# vim break.sh
#! /bin/bash
for i in 'seq 1 5'
do
      echo $i
      if [$i ==3 ]
      then
         break
      fi
      echo $i
done
echo aaaaaaa

腳本中,本意是要把1·5數值賦予i,當i等於3時,會跳出循環,後面的4和5都不會再執行。腳本執行結果:

[root@aminglinux-128 ~]# sh break.sh
seq 1 5
break.sh:行5: [seq: 未找到命令
seq 1 5
aaaaaaa

continue

continue也是使用在循環中的,當在shell腳本中遇到continue時,結束的不是整個循環,而是本次循環。

[root@aminglinux-128 ~]# vim continue.sh
#! /bin/bash
for i in 'seq 1 5'
do
    echao $i
    if [$i ==3]
    then

        continue
   fi
echo $i
done
echo $i

腳本執行結果

[root@aminglinux-128 ~]# sh continue.sh
continue.sh:行4: echao: 未找到命令
continue.sh:行5: [seq: 未找到命令
seq 1 5
seq 1 5

當i大於3時,出現了continue,所以結束本次循環,continue後面的語句不再執行,繼續下一次循環。

exit

exit直接退出整個shell腳本

[root@aminglinux-128 ~]# vim exit.sh
#! /bin/bash
for i in 'seq 1 5'
do
echo $i
if [ $i == 3 ]
then
    exit
fi
echo $i
done
echo aaaaaaa

腳本執行結果

[root@aminglinux-128 ~]# sh exit.sh
seq 1 5
exit.sh:行5: [seq: 未找到命令
seq 1 5
aaaaaaa


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