標籤:for 迴圈用法
for迴圈結構
文法1、
for 變數名 in 變數取值列表
do
指令集
done
提示:在此結構中“in 變數取值列表 ”可省略,省略時相當於in “[email protected]” 使用for i 就相當於使用 for i in "[email protected]"
=========================
文法2、 類似C語言
for ((運算式1;運算式2;運算式3))
do
指令集
done
其中運算式1是初始變數
運算式2是條件,如果這個條件成立就,執行迴圈指令集
運算式3是對錶達式2的變數等進行操作,如自增,自減等
=========================
範例1. 輪詢列印下面名稱
[[email protected] 03]# cat for.sh |||
#!/bin/sh |||
for i in lvnian01 lvnian02 lvnian03 lvnian04 |||
do |||
echo $i |||
done |||
[[email protected] 03]# sh for.sh |||
lvnian01 |||
lvnian02 |||
lvnian03 |||
lvnian04 |||
[[email protected] 03]# |||
=========================== |||
[[email protected] 03]# cat for.sh
#!/bin/sh
for i in `seq 10 20 100`
do
echo $i
done
##seq 上面的 第一個數字是初始值,第二個是間隔,第三個最大值,意思是從10開始輸出,輸出間隔為20,輸出的最大值不能超過100
[[email protected] 03]# sh for.sh
10
30
50
70
90
[[email protected] 03]#
##################################################
範例2.開發指令碼實現進設定開機自啟動sshd rsyslog crond network sysstat等服務。
[[email protected] 03]# cat for.sh
#!/bin/sh
for a in `chkconfig --list|awk ‘{print $1}‘`
do
/sbin/chkconfig $a off
/sbin/chkconfig --list $a
done
for i in sshd rsyslog crond network sysstat
do
/sbin/chkconfig $i on
/sbin/chkconfig --list $i
done
[[email protected] 03]# sh for.sh
abrt-ccpp 0:off 1:off 2:off 3:off 4:off 5:off 6:off
abrt-oops 0:off 1:off 2:off 3:off 4:off 5:off 6:off
abrtd 0:off 1:off 2:off 3:off 4:off 5:off 6:off
acpid 0:off 1:off 2:off 3:off 4:off 5:off 6:off
......
......
sshd 0:off 1:off 2:off 3:off 4:off 5:off 6:off
svnserve 0:off 1:off 2:off 3:off 4:off 5:off 6:off
sysstat 0:off 1:on 2:off 3:off 4:off 5:off 6:off
udev-post 0:off 1:on 2:off 3:off 4:off 5:off 6:off
sshd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
rsyslog 0:off 1:off 2:on 3:on 4:on 5:on 6:off
crond 0:off 1:off 2:on 3:on 4:on 5:on 6:off
network 0:off 1:off 2:on 3:on 4:on 5:on 6:off
sysstat 0:off 1:on 2:on 3:on 4:on 5:on 6:off
[[email protected] 03]#
#######################################
範例3
求1+2+3+..+100和1+2+3+..+n之和
[[email protected] 03]# cat for.sh
#!/bin/sh
for i in `seq 100`
do
let sum=sum+i
done
echo $sum
echo "=================="
for ((i=1;i<=$1;i++))
do
let sum1=sum1+i
done
echo $sum1
[[email protected] 03]# sh for.sh 10
5050
==================
55
[[email protected] 03]#
#######################################
範例4
批量在data目錄下處理10個檔案 touch1-10
[[email protected] 03]# cat for.sh
#!/bin/sh
[ ! -d ./data ] && mkdir ./data -p && cd ./data
for i in `seq 10`
do
touch lvnian$i
done
[[email protected] 03]#
====
[[email protected] 03]# ls
for.sh for01.sh for02.sh for03.sh for04.sh ran.sh ziqidong.sh
[[email protected] 03]# sh for.sh
[[email protected] 03]# ls
data for.sh for01.sh for02.sh for03.sh for04.sh ran.sh ziqidong.sh
[[email protected] 03]# ls data/
lvnian1 lvnian10 lvnian2 lvnian3 lvnian4 lvnian5 lvnian6 lvnian7 lvnian8 lvnian9
[[email protected] 03]#
#######################################
範例5
把上面的檔案名稱lvnian全部修改成xiaogao
[[email protected] 03]# cat for.sh
#!/bin/sh
cd ./data
for i in `ls ./`
do
mv $i `echo $i | sed ‘s/lvnian/xiaogao/‘`
done
[[email protected] 03]# ls data/
lvnian1 lvnian10 lvnian2 lvnian3 lvnian4 lvnian5 lvnian6 lvnian7 lvnian8 lvnian9
[[email protected] 03]# sh for.sh
[[email protected] 03]# ls data/
xiaogao1 xiaogao10 xiaogao2 xiaogao3 xiaogao4 xiaogao5 xiaogao6 xiaogao7 xiaogao8 xiaogao9
[[email protected] 03]#
#######################################
範例6
大量建立N個系統使用者使用者為user1-N,N是傳參,你需要多少個使用者N就是多少。密碼是隨機的10位任一字元。把帳號和密碼放在user.log檔案中
[[email protected] 03]# cat for.sh
#!/bin/sh
num=$1
for n in `seq $num`
do
useradd user${n}
lvnian=`cat /dev/urandom |head -1|md5sum |cut -c 11-20 `
echo lvnian | passwd --stdin user${n}
echo "user${n} : --------------> $lvnian" >> user.log
done
[[email protected] 03]#
[[email protected] 03]# cat user.log
user1 : --------------> a1c15b266d
user2 : --------------> c4fc6b0c66
user3 : --------------> 22bd804b11
user4 : --------------> 8f1313bfa8
user5 : --------------> 0f14a7eba1
user6 : --------------> 1aa00f757f
user7 : --------------> eb7feb075e
user8 : --------------> fc8336e658
user9 : --------------> 24748ac3bf
user10 : --------------> 3b7f6ca3f0
#######################################
本文出自 “奮鬥吧” 部落格,請務必保留此出處http://lvnian.blog.51cto.com/7155281/1701474
for 迴圈用法