for迴圈和while迴圈類似,但是for主要用於執行次數有限的迴圈,而不是守護程序和無限迴圈。for語常見的語法有兩種,下面是例子:
第一種是for為變數取值型,語法如下:
for 變數名 in 變數取值列表
do 指令
done
或
for 變數名 in 變數取值列表;do
指令done
此語法我們稱之為c語言型for迴圈語句,其語法結構如下:
for((exp1;exp2;exp3))
do 指令
done
for關鍵字後的雙括號內是三個表示式,第乙個是變數初始化(例如:i=0),第二個為變數的範圍(例如:i<100),第三個為變數自增或自減(例如:i++)
for n in `seq 10`;do
touch `openssl rand -hex 10 | cut -c 1-10`_oldchang.html
done
執行結果
[root@shell ~/html]# sh html.sh
[root@shell ~/html]# ls
213cbf897a_oldchang.html 717e95ca97_oldchang.html ba301f9c67_oldchang.html e6d8e4b6a0_oldchang.html
288109aaa5_oldchang.html 73f570e1fe_oldchang.html c9f7206526_oldchang.html html.sh
47cdb14eee_oldchang.html 953d2d26c4_oldchang.html d3e4a618ef_oldchang.html
2、 使用for迴圈,將上面檔名中的oldchang改為oldduan,並將副檔名全部大寫,使用三種方法
for file in `ls`;do
mv $file $_oldduan.html
done
執行結果
[root@shell ~/html]# sh mv.sh
[root@shell ~/html]# ls
213cbf897a_oldduan.html 717e95ca97_oldduan.html ba301f9c67_oldduan.html e6d8e4b6a0_oldduan.html
288109aaa5_oldduan.html 73f570e1fe_oldduan.html c9f7206526_oldduan.html html.sh_oldduan.html
47cdb14eee_oldduan.html 953d2d26c4_oldduan.html d3e4a618ef_oldduan.html
還可使用
ls |awk -f'_' ''|bash
rename "oldchang.html" "oldduan.html" *.html
3、 使用for迴圈和if,篩選出以下單詞中字元數大於等於6的單詞:i am teacher oldchang and i like eating and sleeping
for n in $1;do
if [ "$" -gt 6 ];then
echo $n
fidone
執行結果
[root@shell ~/html]# sh danchi.sh 'i am teacher oldchang and i like eating and sleeping'
teacher
oldchang
sleeping
還可用使用
[root@shell ~/html]# echo $
8[root@shell ~/html]# echo $a|wc -l
8[root@shell ~/html]# expr length $a
8[root@shell ~/html]# echo $a|awk ''
8
4、 for迴圈列印99乘法表
for ((a=1;a<=9;a++));do
for ((n=1;n<=$a;n++));do
let mun=$a*$n
echo -en "$a*$n=$mun\t"
done
echo
done
執行結果
[root@shell /server/scripts]# sh chengfabiao2.sh
1*1=1
2*1=2 2*2=4
3*1=3 3*2=6 3*3=9
4*1=4 4*2=8 4*3=12 4*4=16
5*1=5 5*2=10 5*3=15 5*4=20 5*5=25
6*1=6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36
7*1=7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49
8*1=8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64
9*1=9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81
for ((a=9;a>=1;a--));do
for ((n=1;n<=$a;n++));do
let mun=$a*$n
echo -en "$a*$n=$mun\t
done
echo
done
執行結果
[root@shell /server/scripts]# sh chengfabiao2.sh
9*1=9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81
8*1=8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64
7*1=7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49
6*1=6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36
5*1=5 5*2=10 5*3=15 5*4=20 5*5=25
4*1=4 4*2=8 4*3=12 4*4=16
3*1=3 3*2=6 3*3=9
2*1=2 2*2=4
1*1=1
1、 給出乙個網段,如10.0.0.0/24,如何判斷網段內的所有ip是否能聯通
for ((a=0;a<=254;a++));do
&
done
wait
{}的作用是把指令碼放在後台.!wait 是指令碼執行完自己退出指令碼執行結果
[root@shell ~/html]# sh ping.sh
10.0.0.7
shell程式設計 for迴圈
列表迴圈 1.已知次數 語法 用花括號定義迴圈次數 for variable in do command command done for variable in a b c do command command done 案例 輸出1到5 for i in doecho idone 列印1到50的...
shell程式設計 迴圈
二 shell迴圈 while until 三 expect for i in do useradd user i done bin bash ping ip.txt 清空記錄文字 for i in do 後台執行 done wait 等待前乙個程式執行完畢。在執行下乙個命令。echo finish...
shell指令碼程式設計 迴圈(for迴圈)
知識回顧 建立shell指令碼規則 執行指令碼 變數測試 運算if 單分支 雙分支 多分支 例項 剪刀石頭布 檢測主機是否存活 判斷成績 迴圈 for while case 分支編寫 學習shell注意 shell是一門只針對於linux的指令碼語言 知識放空 重點是學習語法結構 for迴圈 語法結...