shell脚本的循环:重复执行命令

1.for循环

语法

for 变量名称 in 变量值列表

do

命令

done

for根据变量值列表中的内容,重复执行命令,直到变量值列中的所有内容都取值完后结束。

取值列表的类型:可以是特定文本文件,命令生成列表

案列:

vi user.txt

zsan

lisi

:wq

vi useradd_for.sh

#!/bin/bash

Un=$(cat /root/bin/user.txt)

for i in $Un

do 

useradd #i

ehco 123123 |passwd --stdin $1

done

:wq

chmod +X useradd_for.sh

./useradd_for.sh


案列:检查网络中存活主机

vi chk_net_alive_host.sh

#/bin/bash

read -p "please your want chk net:" NET   ##输入192.168.100

for i in $(seq 1 254)

do

ping -c 2 $NET.$i &&echo "$NET.$i is up."

done

:wq


案列:设置开机服务

vi ck.list

crond

dhcpd

:wq

vi onboot_for.sh

#!/bin/bash

SL=$(cat /root/bin/ck.list)

for i in $SL

do

/etc/init.d/$i status |grep pid

if [ $? -ne 0 ];then

/etc/init.d/$i restart

fi

chkconfig $i on 

done

:wq



for取值列表扩展:序列列表,数组列表


序列列表:

vi for_list.sh

#!/bin/bash

FL={vsftpd,dhcpd,named}

for i in $FL

do

/etc/init.d/$i restart

chkconfig $i on

done

for i in {1..254}

do

ping -c 2 192.168.10.$i &>/dev/null

done

:wq