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

echo  123123 |passwd  --stdin $i

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

for  i  in  $(seq  1  254)

do

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

done

案例:设置开机服务

vi  chk_ser_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

vi  ck.list

auditd    ##审计服务

blk-availability  ##块设备管理服务

crond   ##计划任务

dhcpd

gpm

iptables   ##iptables防火墙

lvm2-monitor   ##lvm的管理服务

named   ##dns服务

network   ##网络

ntpd   ##时间服务器

postfix  ##邮件服务

rsyslog   ##系统日志服务

sshd   ##远程连接

udev-post  ##udev硬件管理服务

xinetd  ##超级服务,cvs,tftpd等小服务的管理器

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

数组列表:

vi for-arry.sh

#!/bin/bash

A=(crond gpm iptables lvm2-monitor network rsyslog sshd udev-post)

echo ${A[1]}

echo ${A[5]}

echo A arry length is ${#A[*]}

for i in ${A[*]};do

chkconfig --list $i

done

[[email protected] bin]#

时间: 2024-10-10 22:28:07

Shell脚本的循环:重复执行命令的相关文章

shell中while循环引用ssh命令的坑

原理shell代码如下: #!/bin/sh cat ../androidsrc | while read line do         ip=$(echo $line | awk '{print $1}')         srcdir=$(echo $line | awk '{print $2}')         destdir=$(echo $line | awk '{print $3}')         user=$(echo $line | awk '{print $4}')  

Linux shell脚本的建立与执行

在进行linux测试时编写脚本是必不可少的.最近经常使用Linux,感觉太频繁地敲击键盘有些累了,于是想到了Shell脚本.可以把太多的命令写成一个脚本,这样每次执行一遍  shell文件,就可以省去了敲击键盘的时间.于是在网上搜了一些有关Linux下脚本编程的内容. Shell不仅仅是命令的收集,而且是一门非常棒的编程语言.您可以通过使用shell使大量的任务自动化,shell特别擅长系统管理任务,尤其适合那些易用性.可维护性和便携性比效率更重要的任务. 用户可以使用任何文本编辑器编辑shel

Shell脚本-----while循环和until循环

while 测试条件 do 语句1 语句2 done 测试条件:条件满足就循环,直到条件不满足就退出循环 while循环如何退出?在循环体中改变测试条件相应的变量值 补充:算术运算符 sum=$[$sum+$i] = sum+=$i -= *= sum+=1 = let sum++ sum-- sam=3 while [ $sam - le 5 ] do let sam++ done 例子:用户随机输入一个数值,就循环几次echo "test" >> /tmp/123  #

使用 watch 帮你重复执行命令

lujun9972.github.io/blog/2018/05/10/使用watch帮你重复执行命令/ 推荐一个大数据学习群 119599574晚上20:10都有一节[免费的]大数据直播课程,专注大数据分析方法,大数据编程,大数据仓库,大数据案例,人工智能,数据挖掘都是纯干货分享, 有时候你需要不断的执行某个命令,追踪其输出产生的变化情况.你可能会写一个死循环来做这件事情: while : do clear commands sleep 1 done 然而实际上linux中有一个 watch

Linux Shell脚本入门--cut命令

Linux Shell脚本入门--cut命令 cut cut 命令可以从一个文本文件或者文本流中提取文本列. cut语法 [[email protected] ~]# cut -d'分隔字符' -f fields <==用于有特定分隔字符 [[email protected] ~]# cut -c 字符区间 <==用于排列整齐的信息 选项与参数: -d :后面接分隔字符.与 -f 一起使用: -f :依据 -d 的分隔字符将一段信息分割成为数段,用 -f 取出第几段的意思: -c :以字符 (

解决方案:centos运行shell脚本时报“$&#39;\r&#39;: 未找到命令”

=============================================== 2018/9/12_第1次修改                       ccb_warlock =============================================== 问题: 将vs code里编写好的sh脚本(tmp.sh)上传到服务器(centos),运行时报"$'\r': 未找到命令". 解决方案: 查了资料后才知道,由于该脚本的命令在windows上编辑后

重复执行命令的脚本

工作过程中,为了监控状态,经常要不断地重复执行某个命令,因此写了个脚本来简化操作 #! /bin/bash # filename:redo.sh #usage: redo.sh [-d delaytime] [-c count] command #默认间隔时间为15s,无限循环执行 delay=15 count=-1 while getopts d:c: OPTION do     case $OPTION in     d) delay=$OPTARG         ;;     c) co

shell脚本中切换用户执行相应的命令或者shell脚本的方法

通常在执行自动化过程中可能需要将root用户切换到其他用户进行执行,如:oralce 但是,执行的命令又要回到root用户下,继续执行root用户下的其他命令. 此时需要了解 su 命令中的参数 -c  或 -s 比如: # su - oracle -c "pwd"/home/oracle 或 su - oracle -s /bin/sh test.sh 此时执行的test.sh中相关命令要在bin/sh下,换句话说,bin/sh支持的命令才能执行. 当然我们可以将结果重定向到其他的文

Bash shell脚本打印出正在执行的命令

默认情况下,bash脚本不会打印执行的每个命令,这个有时候不太方面. 如下的方法可以让bash脚本打印出执行的命令: 1) 在脚本里添加 set -v 或者 #!/bin/bash -v 以加 set -v 最好. set -v  和 set -o verbose 是一样的 2) 添加 set -x 或者 #!/bin/bash -x 3, bash -v script.sh 或者 bash -x script.sh