大家好呀!今天简单聊一聊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)在当前终端调用
当前命令行调用,只对当前用户生效
# 先source一下函数的文件
source fun1.sh
# 再调用(直接写函数名)
fun1
fun2
2)在脚本中调用
在脚本中调用,只对当前脚本生效。
#!/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的退出值