收款定制开发Shell脚本(三)

Shell流程控制


一、if 收款定制开发条件判断语句

  • 收款定制开发单分支条件语句判断是 if 收款定制开发中最基本的,收款定制开发判断某个条件成功,返回结果;收款定制开发如果不符合条件则执行另个程序。

1、单分支if语句

  • 条件成立,执行程序;如不成立,收款定制开发不进行操作。

收款定制开发单分支流程判断图:

收款定制开发语句示例与案例:

if [ 收款定制开发条件判断式 ]								# 判断1,如果成立then											收款定制开发条件成立执行”命令程序“							# 执行这个 “命令程序” fi												# 没有成立,直接退出
  • 1
  • 2
  • 3
  • 4

磁盘邮件告警案例

#!/bin/bash#---------xy!---------DISK=$(df -h | grep "/dev/mapper/centos-root" | awk '{print $5}' | cut -d"%" -f 1)		#摘取磁盘百分比if [ ${DISK} -ge 2 ]thenecho "\"/\" 目录磁盘超过2%" 																#公司中可改为邮件,使用率自定义fi
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

2、双分支if语句

  • 条件成立,执行第一个命令程序,不成立则执行第二个命令程序。

双分支流程判断图:

语句示例与案例:

if [ 条件判断式 ]								#条件判断,如果成立then											条件成立执行”命令程序1“							#执行程序1else											条件不成立执行”命令程序2“							#执行程序2fi
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

检查Apache状态案例

#!/bin/bash#---------xy!---------CHECK=$(netstat -anpt | grep "httpd" | grep "80" | awk '{print $6}')				#检查http的端口是否是LISTEN#CHECK=$(nmap -sT 192.168.10.1 | grep "http" | grep "80/tcp" | awk '{print $2}')	#-s扫描 -T所有tcpif [ "${CHECK}" == "LISTEN" ]														#判断LISTENthen																				echo "$(date) 正在运行!" >> /root/acc.log											#执行正在运行语句,追加到acc.logelse																				systemctl start httpd >> /root/err.log												#启动httpd,追加到err.logecho "$(date) 正在启动!" >> /root/err.log											#输出信息,追加到err.logfi
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

3、多分支if语句

  • 判断测试结果的成立n,执行程序n;n为变量,进行多次判断

多分支流程判断图:

语句示例与案例:

if [ 条件判断式1 ]then条件1成立执行”命令程序1“elif [ 条件判断式2 ]then条件2成立执行”命令程序2“elif [ 条件判断式3 ]then条件3成立执行”命令程序3“elif [ 条件判断式n ]then条件n成立执行”命令程序n“#...省略更多,,,else条件判断式都不成立,最后执行此命令程序fi
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

文件或目录检查案例

#!/bin/bash#---------xy!---------read -p "请输入文件名:" FILE					#输入的信息if [ -z "$FILE" ]							#判断是否为空then	echo "您未输入任何字符串,文件或目录等"	exit 1									#可以用echo $?进行判断elif [ -d "$FILE" ]							#判断是否为目录	then	echo "这是一个目录"	exit 2elif [ -f "$FILE" ]							#判断是否为文件	then	echo "这是个文件"	exit 3else	echo “$FILE 是其他字符串,特殊字符等”		#否则输出其他	exit 4fi
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

二、case 多分支条件语句

  • case语句和 if…elif…else 语句一样都是多分支条件语句,但是他们俩区别在于:case语句只能判断其中一个并执行对应操作,而if可以判断多总条件关系。

case 多分支流程判断图:

语句示例与案例:

case  $变量值  in"变量1")    命令序列1    ;;"变量2")    命令序列2    ;;#...省略更多,,,* )    都不是执行此命令    ;;esac
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

Apache服务启动脚本案例

#!/bin/bash#---------xy!---------case $1 instart)systemctl $1 httpdecho "$(date) Apache服务已启用!";;stop)systemctl $1 httpdecho "$(date) Apache服务已停止!";;status)#systemctl $CASE httpdCHECK=$(nmap -sT 192.168.10.1 | grep "http" | grep "80/tcp" | awk '{print $2}')			#判断httpd状态,直接摘取状态对比if [ "${CHECK}" == "open" ]thenecho "$(date) Apache服务正在运行!" elseecho "$(date) Apache服务未启用!"fi;;restart)systemctl $1 httpdecho "$(date) Apache服务已重启!";;*)echo "只能使用,start,stop,restart,status参数"esac
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28

三、for 循环语句

  • for 循环用来固定多次循环不同的值,也把 for 循环称为计数循环

for 循环流程图:

语句示例与案例:

for 循环语法1

for 变量 in 值1、2、3、4....do	执行程序done  
  • 1
  • 2
  • 3
  • 4

for 循环语法2

for (( 初始值;循环控制条件;变量变化))do	执行程序done
  • 1
  • 2
  • 3
  • 4

注:
1、初始值:循环开始时,赋予某个变量的初始值,如 i=1 ;
2、循环控制条件:指定循环次数,如 i<=50 ,循环会到此结束;
3、变量变化:每次变量循环的变化,如 i=i+1 ,表示每次 i 的值都加1.

for 循环批量添加用户

[root@localhost ~]# cat << EOF >> name.txt> zhangsan> lisi> wangwu> xy> liming> EOF
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
#!/bin/bash#---------xy!---------for m in `cat name.txt`douseradd $m &>>/dev/nullecho "123123" | passwd --stdin $m &>>/dev/nulldone
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8


1 到 100 的和

#!/bin/bash#---------xy!---------s=0for (( i=1;i<=100;i=i+1 ))	#i自增但不超过100do	s=$(( $s+$i ))			doneecho "1+2+3+4+...+100=$s"	#输出和
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

批量ping主机案例

#!/bin/bash#---------xy!---------#for i in {1..254}for i in {1,2,3,4,}do	{				#{}&,将大括号里面的内容放入后台去执行	ip=192.168.10.$i	ping -c3 -i0.2 -W3  $ip &>> /dev/null	if [ $? -eq 0 ]	then		echo "$(date +%Y-%m-%d,%H:%M:%S) $ip is up" >> up-ip.txt	else		echo "$(date +%Y-%m-%d,%H:%M:%S) $ip is down" >> down-ip.txt	fi	}&donewait					#等待前面内存执行完毕,在执行以下内容echo "检测完毕,成功地址在up-ip.txt中"echo "失败地址在down-ip.txt中"
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

四、while和until的区别

1、withe 循环语句

  • while循环判断条件式成立,循环会一直继续,直至循环不成立,循环终止。

while 循环流程图:

语句示例与案例:

while [ 条件判断式 ]	do	执行程序done
  • 1
  • 2
  • 3
  • 4

批量创建用户案例

#!/bin/bash#---------xy!---------NAME="zhangsan"			#名称XY=1while [ $XY -le 20 ]	#创建个数douseradd ${NAME}$XY &>> /dev/nullecho "123123" | passwd --stdin ${NAME}$XY &>> /dev/nulllet XY++done
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11


1到100的合

#!/bin/bash#---------xy!---------i=1s=0while [ $i -le 100 ]		#while循环小于等于100do	s=$(( $s+$i ))	i=$(( $i+1 ))doneecho "$s" 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

2、until 循环语句

  • until 循环,和 while 循环恰好相反,until 循环时只要判断不成立就进行循环,一旦条件成立,则终止循环。
until [ 条件判断式 ]	do	执行程序done
  • 1
  • 2
  • 3
  • 4

until 对于 while区别

#!/bin/bash#---------xy!---------i=1s=0until [ $i -gt 100 ]		#until大于100停止循环do	s=$(( $s+$i ))	i=$(( $i+1 ))doneecho "$s" 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

五、特殊流程控制语句

exit 语句

  • 系统的命令也有 exit 的,用于退出登录当前用户的状态。在shell中可以用 $? 来退出当前脚本,并用来判断退出的程序。
exit 返回值
  • 1

exit 应用案例

#!/bin/bash#---------xy!---------for i in {1,2,3}do	echo "192.168.10.$i"doneexit3		#输出指定返回值,默认成功为0
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

break 语句

  • break 的作用是:当程序执行到此 break 语句时,会直接结束当前循环。
    break 应用案例
#!/bin/bash#---------xy!---------for i in {2,3,4,5,6}do	if [ "$i" -eq 4 ]	then	break		#直接退出程序	fi 	echo "$i"done
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

continue 语句

  • continue 语句跟 break 的区别:break 是结束当前循环,以及之后的循环;而 continue 是结束当前循环,继续下次循环。

continue 应用案例

#!/bin/bash#---------xy!---------for i in {2,3,4,5,6}do	if [ "$i" -eq 4 ]	then	continue		#跳过此次循环	fi 	echo "$i"done
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

网站建设定制开发 软件系统开发定制 定制软件开发 软件开发定制 定制app开发 app开发定制 app开发定制公司 电商商城定制开发 定制小程序开发 定制开发小程序 客户管理系统开发定制 定制网站 定制开发 crm开发定制 开发公司 小程序开发定制 定制软件 收款定制开发 企业网站定制开发 定制化开发 android系统定制开发 定制小程序开发费用 定制设计 专注app软件定制开发 软件开发定制定制 知名网站建设定制 软件定制开发供应商 应用系统定制开发 软件系统定制开发 企业管理系统定制开发 系统定制开发