一文学会Shell中case语句和函数

2024-08-27 16:44:42 浏览数 (1)

大家好呀!今天简单聊一聊Shell中的case语句与函数。在多选择情况下使用case语句将非常方便,同时,函数的学习和使用对于学好一门编程语言也是非常重要的。

一、case语句

case语句为多选择语句。可以用case语句匹配一个值与一个模式,如果匹配成功,则执行相匹配的命令。

1)语法结构

代码语言:javascript复制
case var in             定义变量;var代表是变量名
pattern 1)              模式1;用 | 分割多个模式,相当于or
    command1            需要执行的语句
    ;;                  两个分号代表命令结束
pattern 2)
    command2
    ;;
pattern 3)
    command3
    ;;
		  *)              default,不满足以上模式,默认执行*)下面的语句
    command4
    ;;
esac							esac表示case语句结束

2)eg

eg1:当给程序传入start、stop、reload三个不同参数时分别执行相应命令。

代码语言:javascript复制
#!/bin/bash
read -p "请输入你要的动作:" action
case $action in
	start|S)
	echo "service is running...."
	;;
	stop|T)
	echo "service is stoped..."
	;;
	reload|R)
	echo "service is restart..."
	;;
	*)
	echo "请输入你要的动作"
	;;
esac

$1:脚本后面的第一个参数。

二、函数

shell中允许将一组命令集合语句形成一段可用代码,这些代码块称为shell函数。

2.1 函数定义

1)基本语法

代码语言:javascript复制
# 方式1
函数名()
{
  函数体(一堆命令的集合,来实现某个功能)   
}
# 方式2
function 函数名()
{
   函数体(一堆命令的集合,来实现某个功能)  
}

2)eg

创建一个fun1.sh的脚本

代码语言:javascript复制
vim fun1.sh

在其中定义fun1和fun2两个函数

代码语言:javascript复制
#!/bin/bash
fun1(){
	echo hello world
	hostname
}
function fun2(){
	A=hello
	# -z判断字符串是否为空
	if [ -z "$A" ];then
		echo "变量为空"
	else
		echo $A
	fi

2.2 函数调用

主要有如下3种函数调用方式

1)在当前终端调用

当前命令行调用,只对当前用户生效

代码语言:javascript复制
# 先source一下函数的文件
source fun1.sh
# 再调用(直接写函数名)
fun1
fun2

2)在脚本中调用

在脚本中调用,只对当前脚本生效。

代码语言:javascript复制
#!/bin/bash
menu(){
cat <<-END
	h	显示命令帮助
	f	显示磁盘分区
	d	显示磁盘挂载
	m	查看内存使用
	u	查看系统负载
	q	退出程序
	END
}
menu		//调用函数
代码语言:javascript复制
#打印菜单
source ./fun1.sh

source:非标准执行方法

3)定义到用户环境变量中

在任何地方都生效(对所有用户生效)

代码语言:javascript复制
# /etc/profile	/etc/bashrc		~/.bash_profile	  ~/.bashrc
# 在该文件中定义函数
vim /etc/bashrc

2.3 return作用

1)return可以结束一个函数,类似于循环控制语句break(结束当前循环,执行循环体后的代码)

2)return默认返回函数中最后一个命令的退出状态,也可以给定参数值,该参数值的范围是0-256之间

3)如果没有return命令,函数将返回最后一个Shell的退出值

0 人点赞