首页 > 系统相关 >shell函数

shell函数

时间:2023-12-20 17:48:35浏览次数:22  
标签:shell 函数 start echo nginx 菜单 hello

1.函数作用

函数是一个非常实用的技能,用于封装代码块,复用代码,省去同一段代码,重复写,导致代码像一块烂抹布;

封装函数后,代码立刻化身为高级绸缎!

shell代码,自上而下

先定义、后调用

2.函数定义与调用

方法1,完整写法

function hello(){

    echo "hello chaoge linux."
}


function ngx_status(){
    systemctl status nginx
    ps -ef|grep nginx
}



# 执行函数
hello
ngx_status

方法2,懒人写法

hello(){
    echo "welcome my linux~~ www.yuchaoit.cn"
}


start(){
    systemctl start nginx
    ps -ef|grep nginx
    netstat -tunlp|grep nginx

}


# 先后调用函数
start
hello

3.函数传参

1. 这里的函数传参,是指单独给函数传递执行参数,和给脚本传入参数是两码事
2. 函数传参是指,函数在执行的时候,可以传入位置参数,这样函数连带参数一起执行。

3.1 函数传参语法(细节)

#!/bin/bash 

function hello(){
    echo "函数开始执行"
    # 注意这里的参数,
    echo "函数体中接收的参数1 :" $1
    echo "函数体中接收的参数2 :" $2
}

# 这里传入的是函数参数
hello laoliu laoba

echo "函数外,可以正常的接收位置参数1:" $1
echo "函数外,可以正常的接收位置参数2:" $2

 

3.2 计算器函数(注意参数语法)

# 写一个函数,接收函数参数

#!/binbash

calc(){
        case $2 in
        +)
            echo "$1 + $3 = $[$1+$3]" ;;

        -)
            echo "$1 - $3 = $[$1-$3]" ;;

        ×)
            echo "$1 * $3 = $[$1*$3]" ;;            
        /)
            echo "$1 / $3 = $[$1/$3]" ;;
        *)
            # $0 依然是指文件名
            echo "usage: bash $0 num1 {+|-|×|/} num2"
        esac
}

# 调用函数,传参、且传递脚本的位置参数
calc $1 $2 $3

 

4.函数实战练习

4.1 nginx管理脚本

#!/bin/bash

Usage(){
    echo "Usage: bash $0 {start|stop|restart}"
}


start_nginx(){
    echo "nginx启动中"
}

stop_nginx(){

    echo "nginx已关闭"
}

# 接收用户输入指令
case $1 in
start)
    start_nginx ;;
stop)
    stop_nginx ;;
restart)
    stop_nginx
    start_nginx
    ;;
*)
    Usage
esac

 

4.2 多级菜单版

核心功能就在于条件判断的嵌套

包括while循环、函数、break、continue的总和用法

代码

#!/bin/bash
# author: www.yuchaoit.cn


# 菜单封装函数,便于调用

menu1(){

echo -e "
=============欢迎来到于超老师的linux课程========
兄弟,请你按照如下规则,输入选项
1. Install Nginx
2. Install Mysql
3. Install Redis
4. bye
============================================
"
}


nginx_menu(){
echo -e "
===============请选择对于软件版本==============
1. Install Nginx1.15
2. Install Nginx1.16
3. Install Nginx1.17
4. 返回上一层
=============================================
"
}


mysql_menu(){
    echo "mysql菜单还在开发中....."
}




# 程序打印菜单1
menu1


while true
do
    # 用户选择菜单1
    read -p "您请输入对应的序号:" num1
    # 一级条件判断
    case $num1 in

    1)
        # 进入菜单2
        nginx_menu
        while true
        do
            read -p "请选择对应的nginx版本:" num2
        case $num2 in
            1)
              echo "成功安装nginx 1.15版本!!" 
              ;;
            2)
              echo "成功安装nginx 1.16版本!!" 
              ;;
            3)
              echo "成功安装nginx 1.7版本!!"
              ;;
            4)
              # 清屏,返回上一层
              clear
              menu1
              # 中断二级菜单的循环
              break
              ;;
             *)
              echo "请按规则填写 1 ~ 4 序号...."
         esac
            done
            ;;
    2)
        mysql_menu
        ;;
    3)
        echo "redis菜单于超老师努力开发中。。。"
        ;;
    4)
        echo "bye bye 。"
        exit
        ;;
    *)
        echo "请按规则输入菜单序号1 ~ 4 !!"
        continue
    esac
done

标签:shell,函数,start,echo,nginx,菜单,hello
From: https://www.cnblogs.com/sxy-blog/p/17917091.html

相关文章

  • schedule 定时运行 Python 函数
    安装pipinstallschedule例子每x分钟运行一次importscheduleimporttimedefjob():print("I'mworking...")#每3秒/分钟/小时/天/周运行一次任务、#从现在开始每3秒/分钟/小时/天/周运行一次作业schedule.every(3).seconds.do(job)schedule.every(3).mi......
  • Postgresql中PL/pgSQL的游标、自定义函数、存储过程的使用
    场景Postgresql中PL/pgSQL代码块的语法与使用-声明与赋值、IF语句、CASE语句、循环语句:https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/135090263上面讲了基本语法,下面记录游标、自定义函数、存储过程的使用。注:博客:https://blog.csdn.net/badao_liumang_qizhi......
  • 详解十大经典排序算法(四):希尔排序(Shell Sort)
    算法原理希尔排序是一种基于插入排序的排序算法,也被称为缩小增量排序。它通过将待排序的序列分割成若干个子序列,对每个子序列进行插入排序,然后逐步缩小增量,最终使整个序列有序。算法描述希尔排序(ShellSort)是一种基于插入排序的算法,由DonaldShell于1959年提出。它是插入排序的一种......
  • 通过反汇编理解GCC优化以及inline函数的功能
    在linux环境写下以下C代码:首先不加优化选项去编译:gcc-ginline_func_test.c-oinline_func_test之后用objdump-S反汇编可见:可见,即使f1是inline函数,还是和f2一样被调用了六次。之后加入优化选项去编译gcc-O1-ginline_func_test.c-oinline_func_test这一次,f2依然被......
  • Linux--VM设置静态IP--VM&XShell连接
     1.配置环境Linux:CentOS7远程:XShell7 2.设置①打开虚拟机登录 cd/-->ipaddr 输入:cd/etc/sysconfig/network-scripts回车输入:viifcfg-ens33 --->进入网卡配置文件(必须在左下角Insert模式时编写可直接按......
  • beanshell
    beanshellbeanshell是一种java源代码解释器,具有脚本语言的特性使用beanshell可以是jmeter实现更多的业务需求 vars.get() 从jmeter中获得变量值vars.put()  把数据保存为jmeter的变量log.info()   打印props.get()  读取jmeter.properties文件里的内容 ......
  • MySQL函数
    字符串函数字符串相关操作的函数举个例子:①concat(str1,str2,........):字符串拼接--将product表中pname与price进行拼接selectconcat(pname,price)fromproduct;效果展示: ②lower(str):转成小写--将'SMIT'转成小写selectlower('SMIT')fromdual;效果展示:③......
  • 2023强网杯ez_fmt题解及进阶格式化之劫持子函数
    格式化任意内存读写相信已经是老生常谈了,但是随着题目难度加大,格式化题目给我们的难题逐渐变成了覆写什么,改写什么。这题对我是一道很好的例题,其中对栈及函数调用的理解堪称刷新我的认知。exp先放着,想自己调试理解的可以看看。frompwnimport*context(terminal=['tmux','......
  • 第十三单元 流程控制和函数
    1.选择结构If(...)Begin​语句块​End​elseif(...)Begin​语句块​End​Else​Begin​语句块​End; 注意事项语法中begin..end相当于C#中的{}执行语句只有一条时,begin..end可以省略()可以省略,但是如果条件内包含select语句,()不能省略数据库......
  • 无涯教程-Java - 线程控制函数
    核心Java提供了对多线程程序的完全控制,您可以开发一个多线程程序,该程序可以根据您的要求完全挂起,恢复或停止。您可以对线程对象使用各种静态方法来控制其行为。下表列出了这些方法-Sr.No.Method&Remark1publicvoidsuspend()该方法将线程置于挂起状态,可以使用resume()......