2023年8月2日发(作者:)
shell中的循环for循环、while循环、ifelse
⼀ for循环for循环⼀般格式为:for var in item1 item2 ... itemNdo command1 command2 ... commandNdone写成⼀⾏为:for var in item1 item2 ... itemN; do command1; done;或者下⾯这种类似java的写法::for ((i=1;i<=10;i++))执⾏体⽤do command1 command2 ... commandNdone 包裹举例1. 启动redis集群节点服务,我们可以写⼀个启动脚本 #!/bin/bashfor ((i=1;i<=3;i++)) do /usr/local/bin/redis-server /data/redis_data/700$i/ne
echo "========= 启动服务完毕! ==========="效果如下图:举例2. 关闭redis集群节点服务,我们可以写⼀个#!/bin/bashIP="192.168.158.202"
for ((i=1;i<=3;i++)) do /usr/local/bin/redis-cli -c -h $IP -p 700$i shutdowndone
echo "============ redis服务关闭完毕!================"效果如下图:
举例3:for循环也可以写成⼀⾏: ⽂件内容改动如下:#!/bin/bashIP="192.168.158.202"for ((i=1;i<=3;i++)); do /usr/local/bin/redis-cli -c -h $IP -p 700$i shutdown; done;echo "It's Ok!";echo "================redis服务关闭完毕!===================="效果如下图:
举例4:for循环的另⼀种写法: ⽂件内容改动如下:#!/bin/bashfor i in 1 2 3 do /usr/local/bin/redis-server /data/redis_data/700$i/neecho "===================启动服务完毕!======================="效果如下图:
⼆ while循环举例1:while 与 输⼊重定向 结合使⽤ while循环,并使⽤ < 对输⼊做重定向,以 /tmp/id⽂件作为标准输⼊ 统计各个城市 /weather/forecast?cityId=xxx 和/weather/alert/mobile/cityId=xxx 两个请求url的请求情况,并将各个城市的请求情况写⼊指定的txt⽂件中 。我们可以写⼀个 #!/bin/bashmkdir -p /tmp/tongjiwhile read ido cat /tmp/nginxlogs/*|grep /weather/forecast?cityId=${i} | awk '{print $1,$4,$7,$9}' > /tmp/tongji/city_id${i}_ cat /tmp/nginxlogs/*|grep /weather/alert/mobile?cityId=${i} | awk '{print $1,$4,$7,$9}' > /tmp/tongji/city_id${i}_e < /tmp/id其中 /tmp/id ⽂件内容如下[root@izbp1845cet96se1qmb5ekz ~]# cat /tmp/id
12783052[root@izbp1845cet96se1qmb5ekz ~]#效果如下图:
三 if else现有脚本 内容如下:#!/bin/bashapp=$1if [ $# != 1 ];thenecho exitexitficat /etc/zabbix/zabbix_agentd.d/externalscripts/check_ |grep "#CMDLINE"if [ $? -eq 0 ];thensed -i "7i {"{#CMDLINE}":"${app}","{#SERVICE_NAME}":"${app}"}," /etc/zabbix/zabbix_agentd.d/externalscripts/check_sed -i "7i {"{#CMDLINE}":"${app}","{#SERVICE_NAME}":"${app}"}" /etc/zabbix/zabbix_agentd.d/externalscripts/check_如图其中/etc/zabbix/zabbix_agentd.d/externalscripts/check_ 脚本内容如下: #!/usr/bin/env python#coding:utf-8import jsontotal_dict={"data":[{"{#CMDLINE}":"product-trace","{#SERVICE_NAME}":"product-trace"},{"{#CMDLINE}":"loginLogger-provider","{#SERVICE_NAME}":"loginLogger-provider"}]}jsonStr = (total_dict,sort_keys=True,indent=4,ensure_ascii=False)#python3#print(jsonStr)#python2print jsonStr
通过脚本 向 /etc/zabbix/zabbix_agentd.d/externalscripts/check_ ⽂件中添加新的服务的进程监控[root@ice_python testdir]# bash
{"{#CMDLINE}":"product-trace","{#SERVICE_NAME}":"product-trace"},{"{#CMDLINE}":"loginLogger-provider","{#SERVICE_NAME}":"loginLogger-provider"}[root@ice_python testdir]#
效果:如果使⽤ bash xxx 时,参数不是1,则会添加失败,⾃动退出。⽐如:
发布者:admin,转转请注明出处:http://www.yc00.com/xiaochengxu/1690918257a463254.html
评论列表(0条)