語法格式:bash
for 變量 in 條件(值範圍); do 語句 ;done
示例:計算1到10的累加和code
#!/bin/bash sum=0 for i in 'seq 1 10' //seq 1 10 爲結果集,是以空格號或回車爲間隔遍歷值。 do sum=$[$sum+$i] done echo $sum
示例:針對文件的循環,遍歷每一個ls的結果值判斷是否爲目錄,而後ls該目錄。input
#!/bin/bash cd /etc/ for a in 'ls /etc/' //a是ls /etc/ 結果裏的值每一個遍歷,是以空格爲間隔的 do [-d $a] && ls $a done
示例:/lgs/ 目錄下 touch 1 2 touch 3\ 4.txt (文件名是3 4.txt,脫義字符後是空格)it
for i in 'ls ./' do echo $i done ##執行結果是 1 2 3 4.txt //會把文件3 4.txt 當成兩個文件 3和 4.txt。驗證出是以空格爲間隔遍歷條件裏的值
語法:for循環
while 條件 ;do 語句; done
示例:awk
#!/bin/bash //爲了讓腳本不意外停止,用screen中運行腳本 while : //while true或者while 1的意思,表示永久循環 do load='w|head -1|awk -F 'load average: ' '{print $2}' |cut -d. -f1 ' if[ $load -gt 10 ] then /usr/local/mail.py xxx@xxx "load high" "$load" fi sleep 30 //30秒檢查一次 done
示例:變量
#!/bin/bash while : do read -p "please input a number: " n if[ -z $n ] then echo "你須要輸入東西" continue //繼續執行下一次的循環 fi n1='echo $n|sed 's/[0-9]//g'' if [ ! -z $n1 ] then echo "你只能輸入數字" continue fi break //跳出循環體 done echo $n
#!/bin/bash for i in 'seq 1 10' do echo $i if[ $i -eq 3 ] then break //跳出全部循環 fi echo $i //i=3時,這句不執行了,由於上面跳出for循環體了 done echo aaaaaa ##結果 1 1 2 2 3 aaaaaa
忽略本次循環continue之下的語句,直接進入下一次循環sed
#!/bin/bash for i in 'seq 1 10' do echo $i if [ $i==3 ] then continue //直接進入i=4的循環 fi echo $i done echo$i ##結果 1 1 2 2 3 4 4 5 5 5
#!/bin/bash for i in 'seq 1 5' do echo $i if [ $i==3 ] then exit //i=3,直接不執行之後全部的代碼,退出腳本 fi echo $i done echo aaaaaa //i=3不執行該語句 ##結果 1 1 2 2 3