函数的写法格式:
function check_cpu{
cat .proc.cpuinfo
}
ls /etc/
check_cpu 【不调用函数,则函数体里的命令不会执行】
fun_name(){
函数体
$1 $2 ... $10
}
fun_name 1 2 3
练习:
case 参数 in
a)
b)
c)
*)
【case PAT 支持的格式:*任意内容 a|b) 支持文件通配符】
1.脚本可以接受参数:start stop resatrt status
2.如果参数非此四者之一,提示使用时候报错退出
3.如果是start:则创建/etc/lock/subsys/SCRIPT_NAME,并显示“启动成功”
4.如果是stop:则删除/var/lock/subsys/SCRIPT_NAME,并显示“删除成功”
5.如果是restart:则先stop在start
6.如果是status:存在显示running,不存在显示stop
#!/bin/bash # Author: 埃希123 # Blog: https://www.cnblogs.com/lyali/ # Time: 2019-08-09 22:47:46 # Name: hanshu1.sh # Version: v1.0 # Description: This is a Script. start_1(){ if [ -e /root/testd.sh ];then echo "服务已经启动" else touch /root/testd.sh echo "服务启动成功" fi } stop_1(){ if [ -e /root/testd.sh ];then rm -f /root/testd.sh echo "服务关闭成功" fi } status_1(){ if [ -e /root/testd.sh ];then echo "running" else echo "stop" fi } ugage(){ echo "start|stop|restart|status" } case $1 in start) start_1 ;; stop) stop_1 ;; restart) start_1 stop_1 ;; status) status_1 ;; *) ugage ;; esac
函数的调用 -- return
函数的返回值
当函数中指定了判断语句的时候,我们默认要返回一个错误的结果,但是最近一条命令缺点是正确的,这时我们需要通过return返回一个我们需要的错误状态码
函数结束的时候,我们需要指定一个return的正确返回码
return跳出循环
函数接受参数
函数变量和普通命令一样
只需注意,函数在接受参数的时候,不会使用外部的传参,而是使用内部的参数为准
函数中的变量
本地变量
local 变量名=xxx
本地变量只在本函数内部生效
局部变量
脚本内部变量
环境变量
在整个Linux系统的bash中生效
扩展:关于脚本执行的问题
bash 的方式来执行 -- #!/bin/bash
bash所执行的脚本中定义的变量,在当前shell的子shell中;
全路径或者相对路径的方式执行 -- 须又授权执行权限
source脚本文件或.脚本文件
source这种方式执行脚本文件的时候内部变量所定义的值是在当前shell中的