【shell脚本实战学习笔记】#1

news2024/11/20 11:31:45

shell脚本实战学习笔记#1

脚本编写场景需求:
编写一个比较数据大小的shell脚本,要求判断用户只能输入两位数字,不能是字符或其他特殊字符;并且在shell脚本中需要用到函数来控制执行顺序。

知识点:shell函数|正则匹配|全局变量

完整脚本:

#!/bin/bash

#获取用户输入信息
number1=$1
number2=$2

#判断用户输入的变量个数
check_input(){
    if [ $# -lt 2 ]; then
        echo "当前输入的数值小于2,请输入需要比较的两个数字,两个数字之间用空格分开,谢谢合作!"
        exit 1
    elif [ $# -gt 2 ]; then 
        echo "当前脚本仅支持比较两个数据,暂不支持两个以上数据的比较,请重新输入,谢谢合作!"
        exit 1
    fi
}

#定义一个正在表达式来比较用户输入的是否为数字
re='^[+-]?[0-9]+([.][0-9]+)?$'

#执行判断条件,分别判断两个输入是否为数字
check_Number(){
    if ! [[ $number1 =~ $re ]] || ! [[ $number2 =~ $re ]]; then
        echo "您输入的信息有误,请输入两个数字,并用空格分开,谢谢!"
        exit 1
    fi
}

#执行比较
judge_number(){
    echo "正在执行比较运算,请稍后..."
    sleep 5

    if [ $number1 -gt $number2 ]; then
        echo "$number1大于判断值$number2"
    elif [ $number1 -eq $number2 ];then 
        echo "$number1等于判断值$number2"
    else
        echo "$number1小于判断值$number2"
    fi
}

#主函数运行部分,定义执行哪些函数,以及执行的先后顺序
main(){
    check_input "$@"
    check_Number
    judge_number
}
#程序运行
main "$@" 

需求分析:

  1. 首先要让用户执行脚本时传入两个参数,因此给定$1 $2两个变量;
  2. 需求表明只能输入两个数字,因此判断逻辑有两层:判断变量个数为2个;判断输入内容是否为数字。
  3. 若满足两个判断条件,需要做数字比较的动作,这是脚本的核心需求。

实现过程:

#!/bin/bash

# 定义变量
number=10

# 条件判断
if [ $number -gt 10 ]; then
    echo "数字大于10"
elif [ $number -eq 10 ]; then
    echo "数字等于10"
else
    echo "数字小于10"
fi

在这个脚本中,我们首先定义了一个变量number,然后通过if、elif和else语句检查这个变量的值,并打印出相应的信息。这里的-gt表示"大于"(greater than),-eq表示"等于"(equal)。
通过这个脚本我们初步实现了脚本最基本的比较功能,但这是跟一个固定数值去做比较,我们需要修改逻辑,让脚本实现两个数据的对比:

#!/bin/bash

# 检查是否传入了两个参数
if [ $# -ne 2 ]; then
    echo "请输入需要比较的两个数字,两个数字之间用空格分开,谢谢合作!"
    exit 1
fi

# 获取参数
number1=$1
number2=$2

# 进行比较
if [ $number1 -gt $number2 ]; then
    echo "$number1 大于 $number2"
elif [ $number1 -eq $number2 ]; then
    echo "$number1 等于 $number2"
else
    echo "$number1 小于 $number2"
fi

在这个脚本中,我使用$#来检查传入的参数个数,如果不等于2(-ne 表示不等于),则打印提示信息并退出(exit 1)。之后,我用$1和$2来获取用户输入的两个数字,并进行比较。

但是我还想在这个脚本的基础上去做优化,现在能够判断的仅仅是输入的数据个数,我想添加判断条件判别用户输入的是否是字符或者其他东西,如果是字符,则抛出一个提示说目前不支持字符比较,请输入两位数字;如果输入的是特殊字符,则抛出提示说输入字符有误,请重新输入,因此继续调整:

#!/bin/bash

# 判断用户输入的变量个数
if [ $# -lt 2 ]; then
    echo "当前输入的数值小于2,请输入需要比较的两个数字,两个数字之间用空格分开,谢谢合作!"
    exit 1
elif [ $# -gt 2 ]; then
    echo "当前脚本仅支持比较两个数据,暂不支持两个以上数据的比较,请重新输入,谢谢合作!"
    exit 1
fi

# 定义变量
number1=$1
number2=$2

# 判断输入是否为数字
re='^[+-]?[0-9]+([.][0-9]+)?$'
if ! [[ $number1 =~ $re ]] || ! [[ $number2 =~ $re ]]; then
    echo "输入有误,请确保输入的是两个数字。"
    exit 1
fi

echo "正在执行比较运算,请稍后..."
sleep 5

# 进行比较
if [ $number1 -gt $number2 ]; then
    echo "$number1大于判断值$number2"
elif [ $number1 -eq $number2 ]; then
    echo "$number1等于判断值$number2"
else
    echo "$number1小于判断值$number2"
fi

正则表达式(Regular Expression):这是一个强大的工具,用于匹配字符串模式。在这个脚本中,我使用了正则表达式'^[+-]?[0-9]+([.][0-9]+)?$'来检测输入是否为数字。这个表达式支持整数和浮点数,包括可选的正负号。

条件判断:通过[[ $variable =~ $re ]]来判断变量$variable是否符合正则表达式$re定义的模式。如果不符合,我们打印错误消息并退出脚本。

增强的用户体验和错误处理:通过确保输入为数字,脚本的鲁棒性和用户体验都得到了提升。如果用户输入了非数字,脚本会提供明确的反馈,而不是产生不可预测的行为。

正则表达式中的 在正则表达式中通常用来表示匹配的开始。它指定了模式必须出现在字符串的开头。

[±] 后的 ?:这个 ? 表示前面的字符组 [±](即正号或负号)是可选的。它表示正号或负号可以出现一次,或者不出现。

[0-9] 是匹配一个数字:[0-9] 表示匹配单个数字,即0到9之间的任意一个数字。

括号前面的 +:这个 + 表示前面的模式(括号中的模式)必须至少出现一次。在这个正则表达式中,[0-9]+ 表示至少有一个数字。

[0-9]+ 意思是匹配多个0-9之间的数字:[0-9]+ 表示匹配一个或多个数字。

正则表达式最后的 ?$ :这里的 ? 表示前面的分组(即括号内的模式)是可选的。$ 表示匹配的结束,确实和 ^ 是对应的。^ 表示开头,$ 表示结尾。

判断数据是否符合正则表达式的 if 语句中为什么是两个中括号:在 Bash 中,双中括号 [[ ]] 用于条件表达式。与单中括号 [ ] 相比,双中括号提供了更多的功能,比如模式匹配和正则表达式支持。在这种情况下,使用双中括号可以让我们利用正则表达式来检查变量值。

在 Bash 中,=~ 是一个特定的操作符,用于在条件表达式中执行正则表达式匹配。这个操作符仅在双中括号的条件测试([[ ]])中有效。

if [[ $variable =~ $re ]]; then
    echo "匹配成功"
else
    echo "匹配失败"
fi

这里, $variable是你要检查的字符串,$re 是一个正则表达式。如果 $variable符合这个正则表达式,那么表达式的结果为真(true),否则为假(false)。

注意点:

只在双中括号中有效:=~ 操作符只能在 [[ ]] 条件测试中使用。如果在单中括号 [ ] 中使用,它将不会按照预期工作。

引用和不引用的区别:在使用正则表达式时,通常最好不要引用正则表达式变量(即使用 $re 而不是 "$re"),因为引用会使得表达式被当作普通字符串处理,而非正则表达式。

Bash版本:请注意,这个特性在较老的 Bash 版本中可能不可用。它在 Bash 3.0 及以后的版本中是有效的。

正则表达式的兼容性:Bash 使用的正则表达式是基于 POSIX ERE(扩展正则表达式),它与某些其他编程语言中使用的正则表达式(如Perl兼容正则表达式)略有不同。

所以,=~ 是一个强大的工具,用于在 Bash 脚本中进行模式匹配和数据验证。希望这些信息能帮助你更好地理解和使用这个特性!如果还有其他问题或疑惑,随时欢迎提问!

继续执行,将脚本内容用函数进行控制:

#!/bin/bash

#获取用户输入信息
number1=$1
number2=$2

#判断用户输入的变量个数
check_input(){

if [ $# -lt 2 ]; then
    echo "当前输入的数值小于2,请输入需要比较的两个数字,两个数字之间用空格分开,谢谢合作!"
    exit 1
elif [ $# -gt 2 ]; then 
    echo "当前脚本仅支持比较两个数据,暂不支持两个以上数据的比较,请重新输入,谢谢合作!"
    exit 1
else
    echo "正在执行比较运算,请稍后..."
    sleep 5
fi
}

#定义一个正在表达式来比较用户输入的是否为数字
re='^[+-]?[0-9]+([.][0-9]+)?$'

#执行判断条件,分别判断两个输入是否为数字
check_Number(){
if ! [[ $number1 =~ $re ]] || ! [[ $number2 =~ $re ]]; then
    echo "您输入的信息有误,请输入两个数字,并用空格分开,谢谢!"
    exit 1
fi
}

#执行比较
judge_number(){
if [ $number1 -gt $number2 ]; then
    echo "$number1大于判断值$number2"
elif [ $number1 -eq $number2 ];then 
    echo "$number1等于判断值$number2"
else
    echo "$number1小于判断值$number2"
fi
}

#主函数运行部分,定义执行哪些函数,以及执行的先后顺序
main(){
check_input
check_Number
judge_number
}
#程序运行
main

此时,我将脚本修改为了函数的方式,但是当我运行的时候我发现最开始number两个变量获取到了用户的输入,在执行check_input函数的时候我发现此时函数判断的$#是0,而不是用户实际输入的信息

问题分析:
特殊变量 $# 在函数中的作用域:在 Bash 脚本中,当你在函数内部使用 $# 时,它代表的是传递给该函数的参数个数,而不是传递给脚本的参数个数。由于你在调用 check_input 函数时没有传递任何参数,所以 $# 在 check_input 函数内部的值是 0。

解决方案:
在 main 函数中传递所有脚本参数:当调用 check_input 时,我们使用 $@ 来传递所有脚本参数。$@是一个特殊的变量,它代表了所有传递给脚本的参数,每个参数作为独立的引用字符串。

main() {
    check_input "$@"
    check_Number
    judge_number
}

继续执行发现仍然输出不对,因为单独在脚本的最末尾调用了main函数,此时main函数并未传递全局变量$@,因此在上述main函数中,实际并未传入用户输入的数据,继续修改如下:

#!/bin/bash

# 其他函数定义...

main() {
    # 在这里,"$@" 会包含传递给 main 函数的所有参数
    check_input "$@"
    check_Number
    judge_number
}

# 脚本的最后调用 main 函数,并传递所有脚本参数
main "$@"

完整修改后的代码:

#!/bin/bash

#获取用户输入信息
number1=$1
number2=$2

#判断用户输入的变量个数
check_input(){

if [ $# -lt 2 ]; then
    echo "当前输入的数值小于2,请输入需要比较的两个数字,两个数字之间用空格分开,谢谢合作!"
    exit 1
elif [ $# -gt 2 ]; then 
    echo "当前脚本仅支持比较两个数据,暂不支持两个以上数据的比较,请重新输入,谢谢合作!"
    exit 1
else
    echo "正在执行比较运算,请稍后..."
    sleep 5
    judge_number "$@"
fi
}

#定义一个正在表达式来比较用户输入的是否为数字
re='^[+-]?[0-9]+([.][0-9]+)?$'

#执行判断条件,分别判断两个输入是否为数字
check_Number(){
if ! [[ $number1 =~ $re ]] || ! [[ $number2 =~ $re ]]; then
    echo "您输入的信息有误,请输入两个数字,并用空格分开,谢谢!"
    exit 1
fi
}

#执行比较
judge_number(){
if [ $number1 -gt $number2 ]; then
    echo "$number1大于判断值$number2"
elif [ $number1 -eq $number2 ];then 
    echo "$number1等于判断值$number2"
else
    echo "$number1小于判断值$number2"
fi
}

#主函数运行部分,定义执行哪些函数,以及执行的先后顺序
main(){
check_input "$@"
check_Number
#judge_number
}
#程序运行
main "$@" 

我的修改想法是:只有当用户输入的数据是两个的时候才去执行比较的动作,但是我这样修改,然后输入命令bash shell1.sh 20 aaa去执行这个脚本之后是如下的执行结果:

正在执行比较运算,请稍后...
shell1.sh: line 36: [: aaa: integer expression expected
shell1.sh: line 38: [: aaa: integer expression expected
20小于判断值aaa
您输入的信息有误,请输入两个数字,并用空格分开,谢谢!

问题分析:

逻辑顺序问题:从脚本和执行输出来看,judge_number 函数在 check_Number 函数之前被调用。这导致了即使输入的不是数字,judge_number 也会被执行。

函数调用顺序:在 check_input 函数中直接调用了 judge_number 函数。这意味着只要输入的参数个数正确,无论参数是否为数字,judge_number 都会被执行。

解决方案:

脚本需要确保所有的检查都按正确的顺序进行:

首先检查参数个数:确保用户输入了两个参数。
然后检查参数类型:确保这两个参数都是数字。
最后执行比较操作。

代码修改思路:

根据上述逻辑,对脚本做如下修改:

在 main 函数中控制整体逻辑流程:先调用 check_input 检查参数个数,然后调用 check_Number 检查参数类型,最后调用 judge_number 进行比较。

移除 check_input 中对 judge_number 的直接调用。

确保 check_Number 在 judge_number 之前被调用。

再次修改后的脚本:

#!/bin/bash

# 获取用户输入信息
number1=$1
number2=$2

# 判断用户输入的变量个数
check_input() {
    if [ $# -lt 2 ]; then
        echo "当前输入的数值小于2,请输入需要比较的两个数字,两个数字之间用空格分开,谢谢合作!"
        exit 1
    elif [ $# -gt 2 ]; then 
        echo "当前脚本仅支持比较两个数据,暂不支持两个以上数据的比较,请重新输入,谢谢合作!"
        exit 1
    else
        echo "正在执行比较运算,请稍后..."
        sleep 5
    fi
}

# 定义正则表达式来比较用户输入的是否为数字
re='^[+-]?[0-9]+([.][0-9]+)?$'

# 执行判断条件,分别判断两个输入是否为数字
check_Number() {
    if ! [[ $number1 =~ $re ]] || ! [[ $number2 =~ $re ]]; then
        echo "您输入的信息有误,请输入两个数字,并用空格分开,谢谢!"
        exit 1
    fi
}

# 执行比较
judge_number() {
    if [ $number1 -gt $number2 ]; then
        echo "$number1大于判断值$number2"
    elif [ $number1 -eq $number2 ]; then 
        echo "$number1等于判断值$number2"
    else
        echo "$number1小于判断值$number2"
    fi
}

# 主函数运行部分,定义执行哪些函数,以及执行的先后顺序
main() {
    check_input "$@"
    check_Number
    judge_number
}

# 程序运行
main "$@"

如果我执行的数据是:

bash shell1.sh 20 aaa

脚本有如下输出:

正在执行比较运算,请稍后...
您输入的信息有误,请输入两个数字,并用空格分开,谢谢!

从输出内容来看,只要满足输入的信息是两个,不论是否为数字,都会正常执行比较的输出,
那么是不是可以将check_input函数中的else部分的输出放到judge_number函数里去?

修改建议:

简化 check_input 函数:只保留参数个数的检查,去掉 else 部分的输出。

在 judge_number 函数中添加开始执行的提示:这样,只有在所有检查都通过后,才会显示这个提示并执行比较。

最后调整逻辑版本:

#!/bin/bash

# 获取用户输入信息
number1=$1
number2=$2

# 判断用户输入的变量个数
check_input() {
    if [ $# -lt 2 ]; then
        echo "当前输入的数值小于2,请输入需要比较的两个数字,两个数字之间用空格分开,谢谢合作!"
        exit 1
    elif [ $# -gt 2 ]; then 
        echo "当前脚本仅支持比较两个数据,暂不支持两个以上数据的比较,请重新输入,谢谢合作!"
        exit 1
    fi
}

# 定义正则表达式来比较用户输入的是否为数字
re='^[+-]?[0-9]+([.][0-9]+)?$'

# 执行判断条件,分别判断两个输入是否为数字
check_Number() {
    if ! [[ $number1 =~ $re ]] || ! [[ $number2 =~ $re ]]; then
        echo "您输入的信息有误,请输入两个数字,并用空格分开,谢谢!"
        exit 1
    fi
}

# 执行比较
judge_number() {
    echo "正在执行比较运算,请稍后..."
    sleep 5

    if [ $number1 -gt $number2 ]; then
        echo "$number1大于判断值$number2"
    elif [ $number1 -eq $number2 ]; then 
        echo "$number1等于判断值$number2"
    else
        echo "$number1小于判断值$number2"
    fi
}

# 主函数运行部分,定义执行哪些函数,以及执行的先后顺序
main() {
    check_input "$@"
    check_Number
    judge_number
}

# 程序运行
main "$@"

以上内容就是基本实现一个数据比较的shell脚本需求,同时也确保了脚本的逻辑更加合理且健壮。

以上便是本次实战操作的所有过程了。

感谢您在百忙之中花费时间阅读本篇文章,期望对您的体能提升有所收获!

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1332229.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

计算机组成原理第6章-(算术运算)【下】

移位运算 对于有符号数的移位称为算术移位,对于无符号数的移位称为逻辑移位。 算术移位规则【极其重要】 对于正数的算术移位,且不管是何种机器数【原码、反码、补码】,移位后出现的空位全部填0。 而对于负数的算术移位,机器数不同,移位后的规则也不同。 对于负数的原…

C#/WPF 播放音频文件

C#播放音频文件的方式: 播放系统事件声音使用System.Media.SoundPlayer播放wav使用MCI Command String多媒体设备程序接口播放mp3,wav,avi等使用WindowsMediaPlayer的COM组件来播放(可视化)使用DirectX播放音频文件使用Speech播放(朗读器&am…

yolo实现数据增强(数据集不够,快速增加数据集)

目录结构 附上数据增强的全部代码 # -*- codingutf-8 -*-import time import random import copy import cv2 import os import math import numpy as np from skimage.util import random_noise from lxml import etree, objectify import xml.etree.ElementTree as ET imp…

2024年,我们要勇敢奔跑!

本“人民+体验官”推广人民日报官方微博文化产品《2024年是个什么年?》 图:来源“人民+体验官”推广平台 朋友,2023已经进入尾声阶段,很快新的一年——2024年就来了。这新的一年是新中国成立75周年、澳门回…

linux运行可执行文件,通过c语言调用java的main方法

前言&#xff1a;以前一直在做Android开发&#xff0c;在某本书上看过一句话“Android上面不只有App类的程序可以运行&#xff0c;能在linux下运行的程序&#xff0c;也可以在Android上面运行” 一.编写C语言部分代码 1.定义java.h头文件 #include <jni.h>#ifndef _JAV…

分巧克力c语言

分析&#xff1a;分巧克力&#xff0c;把每一种大小列举出来&#xff0c;在对巧克力分解&#xff0c;在加上所以的分解块数&#xff0c;在和人数比较&#xff0c;如果够分&#xff0c;就保存这一次的结果&#xff0c;在增大巧克力&#xff0c;如果不够分了&#xff0c;就打印上…

Python 运维(三):使用 zipapp 将 Python 程序打包成单个可执行文件

大家好&#xff0c;我是水滴~~ 在 Python 开发中&#xff0c;我们经常需要将应用程序打包成可执行文件&#xff0c;以便在不具备 Python 环境的计算机上运行。Python 提供了多种打包工具&#xff0c;其中之一就是 zipapp。zipapp 可以将 Python 应用程序及其依赖打包成一个单独…

【高数定积分求解旋转体体积】 —— (上)高等数学|定积分|柱壳法|学习技巧

&#x1f308;个人主页: Aileen_0v0 &#x1f525;热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 &#x1f4ab;个人格言:"没有罗马,那就自己创造罗马~" 目录 Shell method Setting up the Integral 例题 Example 1: Example 2: Example 3: Computing…

安装Kubernetes1.23、kubesphere3.4、若依项目自动打包部署到K8S记录

1.安装kubernetes1.23详细教程 kubernetes(k8s)集群超级详细超全安装部署手册 - 知乎 2.安装rancher动态存储 kubectl apply -f https://raw.githubusercontent.com/rancher/local-path-provisioner/master/deploy/local-path-storage.yaml3.安装kubesphere3.4 准备工作 您…

详解KMP算法

KMP算法应该是每一本《数据结构》书都会讲的&#xff0c;算是知名度最高的算法之一了&#xff0c;但很可惜&#xff0c;我大二那年压根就没看懂过~~~ 之后也在很多地方也都经常看到讲解KMP算法的文章&#xff0c;看久了好像也知道是怎么一回事&#xff0c;但总感觉有些地方自己…

线段树/区间树(java实现版详解附leetcode例题)

目录 什么是线段树 线段树基础表示 创建线段树&#xff08;Java版详解&#xff09; 线段树的区间查询 leetcode上的线段树相关问题 leetcode303题.区域和检索-数组不可变 使用线段树解题 不使用线段树解题 leetcode307题.区域和检索-数组可修改 不使用线段树解题 线…

基于 ACK One 实现简单的跨云协同,让业务管理更高效

作者&#xff1a;庄宇 本文根据 2023 云栖大会现场分享实录整理 2 年前的云栖大会&#xff0c;我们发布分布式云容器平台 ACK One&#xff0c;随着 2 年的发展&#xff0c;很高兴看到 ACK One 在混合云&#xff0c;分布式云领域帮助到越来越多的客户&#xff0c;今天给大家汇报…

Burnside 引理 与 Pólya 定理 学习笔记

为了防止明天就把好不容易听完的东西都还给 rabbit_lb 了&#xff0c;还是记一点吧。 1. 群论基础 1.1 群(group) 的定义 给定集合 G G G 和 G G G上的二元运算 ⋅ \cdot ⋅&#xff0c;满足下列条件称之为群&#xff1a; 封闭性&#xff1a;若 a , b ∈ G a,b\in G a,…

机器学习之实验过程01

import pandas as pd import numpy as np import matplotlib.pyplot as plt data_path = /home/py/Work/labs/data/SD.csv # 请确保您的数据文件路径是正确的 df = pd.read_csv(data_path) df.head() # 创建散点图 # 创建散点图 plt.figure(figsize=(10, 6)) plt.scat…

DDD领域驱动设计系列-原理篇-战术设计

概述 上篇战略设计产出了领域及问题域领域模型&#xff1b;详见&#xff1a;DDD领域驱动设计系列-原理篇-战略设计-CSDN博客 战术设计篇聚焦如何落地&#xff0c;包含实际解决方案模型落地&#xff0c;架构分层&#xff08;Clean&#xff0c;CQRS&#xff09;&#xff0c;Rep…

基于Qt之QChart 图表(优美的曲线图案例)

## 项目演示 平台:ubuntu18.04 Qt版本:QT5.14.2 源码位置GitCode:https://gitcode.com/m0_45463480/QCharts/tree/main ## QChart 图表 自从 Qt 发布以来,给跨平台的用户带来很多便利。在 Qt5.7 之前,Qt 在开源社区版本里没有 Qt Charts(自带的绘图组件库)。这使得像…

蓝桥杯2020年10月青少组Python程序设计省赛真题

1、设计一个猜字母的程序,程序随机给出26个小写字母中的一个,答题者输入猜测的字母,若输入的不是26个小写字母之一,让用户重新输入,若字母在答案之前或之后,程序给出相应正确提示,如答错5次,则答题失败并退出游戏,若回答正确,程序输出回答次数并退出游戏。 2、试编一个“口…

收到口头offer千万别飘,离发书面offer还有很远!4个口头offer都没通过,血的教训!...

求职时一路过关斩将&#xff0c;终于收到了口头offer&#xff0c;算是稳了吗&#xff1f; 一位打工人给广大求职者一个建议&#xff1a; 当你收到口头offer时千万别飘&#xff01;因为离最后收到书面offer有很长距离&#xff0c;还有下面这些事要做&#xff1a; 1.提交各种材料…

算法模板之队列图文详解

&#x1f308;个人主页&#xff1a;聆风吟 &#x1f525;系列专栏&#xff1a;算法模板、数据结构 &#x1f516;少年有梦不应止于心动&#xff0c;更要付诸行动。 文章目录 &#x1f4cb;前言一. ⛳️模拟队列1.1 &#x1f514;用数组模拟实现队列1.1.1 &#x1f47b;队列的定…

第26关 K8s日志收集揭秘:利用Log-pilot收集POD内业务日志文件

------> 课程视频同步分享在今日头条和B站 大家好&#xff0c;我是博哥爱运维。 OK&#xff0c;到目前为止&#xff0c;我们的服务顺利容器化并上了K8s&#xff0c;同时也能通过外部网络进行请求访问&#xff0c;相关的服务数据也能进行持久化存储了&#xff0c;那么接下来…