1. 程式人生 > >for循環 while循環 break跳出循環 continue結束本次循環 exit退出整

for循環 while循環 break跳出循環 continue結束本次循環 exit退出整

user 分隔符 .py 結束 then 查看 .sh 死循環 ont

一、for循環
技術分享圖片
需求:計算1-100所有數字的和
[root@linux-01 shell]# vi for1.sh
#!/bin/bash
for i in seq 1 100
do
echo $i //先把100個數字打印出來
done
[root@linux-01 shell]# sh for1.sh //執行腳本打印出100個數字

繼續修改腳本:
[root@linux-01 shell]# vi for1.sh
#!/bin/bash
sum=0
for i in seq 1 100
do
sum=$[$sum+$i]
done
echo $sum
[root@linux-01 shell]# sh -x for1.sh //執行腳本,查看執行過程

繼續完善腳本:
[root@linux-01 shell]# vi for1.sh
#!/bin/bash
sum=0
for i in seq 1 100
do
echo "$sum + $i"
sum=$[$sum+$i]
echo $sum
done
echo $sum
[root@linux-01 shell]# sh for1.sh
技術分享圖片
[root@linux-01 shell]# vi for2.sh
#!/bin/bash
cd /etc/
for a in i ls /etc/
do
if [ -d $a ]
then
echo $a
ls $a
fi
done
[root@linux-01 shell]# sh -x for2.sh //執行腳本查看詳細執行過程

[root@linux-01 shell]# mkdir aming //創建一個aming目錄
[root@linux-01 shell]# cd aming/
[root@linux-01 aming]# ls
[root@linux-01 aming]# touch 1 2 //創建1和2文件
[root@linux-01 aming]# touch 3\ 4.txt //創建一個3脫義 4.txt文件
[root@linux-01 aming]# ls -l
total 0
-rw-r--r-- 1 root root 0 Jul 15 20:40 1
-rw-r--r-- 1 root root 0 Jul 15 20:40 2

-rw-r--r-- 1 root root 0 Jul 15 20:41 3 4.txt //可以看到這是一個文件
[root@linux-01 aming]# for i in ls ./; do echo $i;done
1
2
3
4.txt
//for循環使用這種命令的形式的時候,空格或者回車都作為一個分隔符

二、while循環
技術分享圖片
語法 while 條件;do...;done
案例1:
需求:每隔半分鐘檢查下系統負載,當系統負載大於10的時候就發一封郵件
[root@linux-01 aming]# vim while1.sh
#!/bin/bash
while true //ture和冒號都是真的意思,即死循環
do
load=w|head -1|awk -F ‘load average: ‘ ‘{print $2}‘|cut -d. -f1
if [ $load -gt 10 ]
then
/usr/local/sbin/mail.py [email protected] "load high" "$load"
fi
sleep 30
done
[root@linux-01 aming]# sh -x while1.sh
為了不讓腳本在執行過程中終止,可以進入一個screen,把進程丟到後臺去運行
screen命令詳細使用方法參考網址:http://man.linuxde.net/screen

我們可以把腳本中的內容拆分開執行下
[root@linux-01 aming]# w //使用w命令可以查看系統負載
21:03:12 up 22:27, 1 user, load average: 0.00, 0.01, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/1 192.168.238.1 11:43 0.00s 0.49s 0.01s w
[root@linux-01 aming]# uptime
21:03:16 up 22:27, 1 user, load average: 0.00, 0.01, 0.05
[root@linux-01 aming]# uptime|awk -F ‘load average: ‘ ‘{print $2}‘
0.00, 0.01, 0.05
[root@linux-01 aming]# uptime|awk -F ‘load average:‘ ‘{print $2}‘|cut -d . -f1 //看到0前面有空格
0
讓0前面沒有空格的兩個方法:
方法一:
[root@linux-01 aming]# uptime|awk -F ‘load average: ‘ ‘{print $2}‘|cut -d . -f1 //‘’前面加個空格
0
方法二:
[root@linux-01 aming]# uptime|awk -F ‘load average:‘ ‘{print $2}‘|cut -d . -f1|sed ‘s/ //‘ //加sed
0

while循環案例2
技術分享圖片
死循環需求:
在循環過程當中,需要人為的交互,輸入一個數字,可定要檢測數字是不是自己想要的東西
[root@linux-01 aming]# vim while2.sh
#!/bin/bash
while :
do
read -p "Please input a number: " n
if [ -z "$n" ]
then
echo "you need input sth."
continue //continue表示繼續執行上面的do,不執行下面的內容
fi //如果輸入的有東西,就不執行上面兩行命令,直接執行下面的命令
n1=echo $n|sed ‘s/[0-9]//g‘
if [ -n "$n1" ] //-n等同於! -z
then
echo "you just only input numbers."
continue //繼續上面的循環
fi
break //break就是退出這個腳本的循環,退出來之後直接echo $n
done
echo $n

三、break跳出循環
技術分享圖片
[root@linux-01 aming]# vim break.sh
#!/bin/bash
for i in seq 1 5
do
echo $i
if [ $i -eq 3 ] //這裏也可以寫成if [ $i == 3 ]
then
break
fi
echo $i
done
echo aaaaaaa
[root@linux-01 aming]# sh -x break.sh //-x查看詳細執行過程
++ 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 aaaaaaa
    aaaaaaa
    [root@linux-01 aming]# sh break.sh
    1
    1
    2
    2
    3
    aaaaaaa

四、continue結束本次循環
技術分享圖片
直接忽略continue之下的代碼,直接進行下一次循環
[root@linux-01 aming]# cp break.sh continue.sh
[root@linux-01 aming]# vim continue.sh
#!/bin/bash
for i in seq 1 5
do
echo $i
if [ $i -eq 3 ]
then
continue
fi
echo $i
done
echo aaaaaaa
[root@linux-01 aming]# sh -x continue.sh //-x查看詳細執行過程
++ 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 ‘]‘
  • continue
  • for i in ‘seq 1 5
  • echo 4
    4
  • ‘[‘ 4 -eq 3 ‘]‘
  • echo 4
    4
  • for i in ‘seq 1 5
  • echo 5
    5
  • ‘[‘ 5 -eq 3 ‘]‘
  • echo 5
    5
  • echo aaaaaaa
    aaaaaaa

五、exit退出整個腳本
技術分享圖片
exit是直接退出整個腳本
[root@linux-01 aming]# cp continue.sh exit.sh
[root@linux-01 aming]# vi exit.sh
#!/bin/bash
for i in seq 1 5
do
echo $i
if [ $i -eq 3 ]
then
exit //exit後面也可以給它定義一個數字,執行完腳本輸入echo $?查看數字是否是自定義的
fi
echo $i
done
echo aaaaaaa
[root@linux-01 aming]# sh exit.sh
1
1
2
2
3

for循環 while循環 break跳出循環 continue結束本次循環 exit退出整