• Shell函数


    • 函数的作用
      • 命令合集,完成特定功能的代码块
      • 函数必须先定义才可以使用,如果定义不调用则不被执行
      • 使代码模块化,避免重复代码,加强可读性,便于复用

    toc

    函数基本用法

    定义函数三种写法

    ## 方法一
    函数名() {
        函数要实现的功能代码
    }
    ## 方法二
    function 函数名 {
        函数要实现的功能代码
    ## 方法三
    function 函数名() {
        函数要实现的功能代码
    }

    基本语法

    [root@Shell ~]# vim test.sh
    #!/bin/bash
    ## 定义函数
    function mantou () {  
        echo "吃馒头!"
    }  
    function miantiao () {  
        echo "吃面条!"  
    }  
    ## 调用函数(不调用不会执行)
    mantou
    [root@Shell ~]# source test.sh
    吃馒头

    定义错误数值

    [root@Shell ~]# vim return.sh
    #!/bin/bash
    funreturn() {
        read -p "enter num: " num
        return $[2*$num]
    }
    funreturn
    [root@Shell ~]# source return.sh 2 ; echo $?
    4

    函数传参

    位置传参

    #!/bin/bash
    ## 位置变量不是3个就退出
    if [ $# -ne 3 ];then
        echo "usage: `basename $0` par1 par2 par3"
        exit
    fi
    ## 函数里面三个位置变量相乘
    fun() {
        echo "$(($1 * $2 * $3))"
    }
    ## 函数有参数时候,必须在函数后面加上参数,下面两种都可以
    fun $*
    fun $1 $2 $ $3

    数组传参

    #!/bin/bash
    ## 定义数组
    num=(1 2 3)
    num2=(2 3 4)
    ## 传递所有数值相乘并显示最后结果
    array() {
        number=1
        for i in $*
         do
            number=$[number * $i]
        done
        echo "$number"
    }
    ## 把数组里元数值传递函数相乘
    array ${num[*]} 
    array ${num2[*]} 

    编写 Nginx 启动脚本,使用系统内置函数达到返回结果

    #!/bin/bash
    ## 调用系统内置函数
    source /etc/init.d/functions
    ## 执行
    ret(){
        if [ $? -eq 0 ];then
            action "Nginx Is $1" /bin/true
        else
            action "Nginx Is $1" /bin/false
        fi
    }
    status(){
        Ngx_status=$(ps aux|grep "[n]ginx"|egrep -v "vi|sh"|grep master|awk '{print
    $2}')
        Nginx_Status_Port=$(netstat -lntp|grep nginx|awk '{print $4}')
        echo "Nginx_status_Pid: $Ngx_status"
        echo "Nginx_status_Port: $Nginx_Status_Port"
    }
    case $1 in
    start)
        /usr/sbin/nginx &>/dev/null
        ret $1
        ;;
    stop)
        /usr/sbin/nginx -s stop &>/dev/null
        ret $1
        ;;
    restart)
        /usr/sbin/nginx -s stop &>/dev/null
        ret $1
        sleep 1
        /usr/sbin/nginx &>/dev/null
        ret $1
        ;;
    reload)
         /usr/sbin/nginx -s reload
        ret $1
        ;;
    status)
        status
        ;;
    *)
        echo "Usage: $0 {start|stop|status|restart|reload|}"
    esac
  • 相关阅读:
    tryparse的用法,^0*[1-9]d*$
    寻找指定的进程然后杀死的代码写法
    P2421 [NOI2002]荒岛野人
    P2568 GCD
    P1445 [Violet]樱花
    P3119 [USACO15JAN]草鉴定Grass Cownoisseur
    P1314 聪明的质监员
    P3811 【模板】乘法逆元
    P3943 星空
    P3225 [HNOI2012]矿场搭建
  • 原文地址:https://www.cnblogs.com/songguoyou/p/11884273.html
Copyright © 2020-2023  润新知