shell函数

函数的写法格式:

  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中的

原文地址:https://www.cnblogs.com/lyali/p/11376136.html