Linux的函数跟case语句语法说明
  WrKbzYIY5GyU 2023年11月02日 30 0

case语句:

case语句为多选择语句(其实就是类似if多分支结构), 主要用于centos6的服务脚本里用于判断服务是start还是stop还是status等。

说明: python里没有case语句,python里用if多分支来实现. 但case语句也需要看懂结构, 不仅是shell里用,在数据库的SQL语句里也有case语句。

case var in            			# 定义变量;var代表是变量名
	pattern 1)              	# 模式1;用 | 分割多个模式,相当于or
    		command1            # 需要执行的语句
    		;;                  # 两个分号代表命令结束
	pattern 2)
   			command2
    		;;
	pattern 3)
    		command3
    		;;
	*)              			# 不满足以上模式,默认执行*)下面的语句
    		command4			# 这里可以不加;;符号
esac							# esac表示case语句结束
######case语句对比if
case $sex in								if [ $sex = 男 -o $sex = man ];then
	男|man )	#如果sex变量为男或者man就输出			echo "帅哥"
		echo "帅哥"						   elif [ $sex = 女 -o $sex = woman];then
		;;										 echo "美女"
	女|woman )								else 
		echo "美女"								echo "性别有误"
		;;									 fi
	* )
		echo "性别有误"
esac

函数:

通俗地说,将一组命令集合语句形成一个整体, 给这段代码起个名字称为函数名。可以通过函数名来调用函数内的代码,达到代码重复利用的目的。

函数名() {
  函数体(一堆命令的集合,来实现某个功能)   
}

function 函数名() {
   函数体(一堆命令的集合,来实现某个功能)  
}
#######示例如下
function_name() {
		代码
		代码
}

function function_name() {
		代码
		代码
}

建议用第一种,不用写function,简单方便

示例演示

funct1() {				# 函数名加()来定义函数,小括号是固定写法,大括号里面为函数体
    echo 1
    echo 2
    echo 3				# 大括号里的三条命令就是函数主体
}

funct1					# 直接使用函数名字调用函数,将会执行函数主体内的内容

如下为服务器脚本示例,结合case和函数使用

[root@server ~]# vim /etc/init.d/new_sshd		# 要创建到/etc/init.d/目录下

#!/bin/bash

# chkconfig: 2345 64 36

start() {										# start函数
	/usr/sbin/sshd								# 调用/usr/sbin/sshd命令启动sshd服务
}
stop () {										# stop函数
	kill -15 $(cat /var/run/sshd.pid)			# 通过pid文件查找pid,然后kill -15停进程
}
reload() {										# reload函数
	kill -1 $(cat /var/run/sshd.pid)			# 通过pid文件查找pid,然后kill -1刷新
}

restart() {								# restart函数里面调用stop和start的函数(函数的嵌套)
    stop
    start
}
status() {										# status函数
	if [ -e /var/run/sshd.pid ];then		# 通过判断pid文件是否存在,从而得知服务是否启动
		echo "sshd正在运行"
	else
		echo "sshd是停止状态"
	fi
}

case "$1" in			# $1变量回顾(shell第1天有讲),指执行脚本接的第一个参数
	start )				# 如果$1的值为start,则调用start函数主体内的代码
		start
		;;
	stop  )
		stop
		;;
	restart )			# 如果$1的值为restart
		restart
		;;
	reload )
		reload
		;;
	status )
		status
		;;
	* )		   # 如果$1的值不为start,stop,restart,reload,status其中之一,则执行下面的echo语句
		echo "只支持(start|stop|restart|reload|status)"
esac


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

WrKbzYIY5GyU