当前位置: 首页 > news >正文

shell练习

开篇小贴士:为创建的sh(当然可以是任何一个文件)文件添加开头的注释

1、进入到家目录,然后通过 ls -a 查看全部文件

2、找到并编辑一个名为 .vimrc (Vim编辑器的核心配置文件)的配置文件,下图是添加的一个示例(我目前的注释)

在该配置文件中还可以修改字体、颜色主题、窗口布局等,具体文献参考如下:

vim设置新建文件自动填入的文件头(作者信息等)、设置编辑时间、鼠标直接定位_linux 创建文件时自动填写信息-CSDN博客

ping主机测试,查看主机是否存活

创建一个shell脚本以sh结尾即可,通过bash xx.sh来运行(以下均相同,不再赘述)

注:这里直接通过bash xx.sh 来运行的话必须要在当前位置下有这个文件,不然后面应该是路径

#########################
#File name:1.sh
#Version:v1.0
#Email:admin@test.com
#Created time:2024-11-24 19:07:06
#Description:
#########################
echo "ping主机测试,查看主机是否存活" 
read -p "请输入一个需要测试的ip地址:" ipadd
ping -c 1 "$ipadd" > /dev/null
if [ $? -eq 0 ]; thenecho "该ip地址目前存活......"
elseecho "该ip地址已断开连接......"
fi


判断一个用户是否存在

#!/bin/bash
#########################
#File name:2.sh
#Version:v1.0
#Email:admin@test.com
#Created time:2024-11-24 19:23:56
#Description:
#########################
echo "判断一个用户是否存在"
read -p "请输入一个需要查看是否存在的用户名:" username
if [ $username == "root" ]; thenecho "请输入除root用户外的用户!!!" && exit
elsels  /home | grep $username > /dev/nullif [ $? -eq 0 ]; thenecho "$username用户是存在的"elseecho "$username用户不存在的"fi
fi


判断当前内核主版本是否为3,且次版本是否大于10

#!/bin/bash
#########################
#File name:3.sh
#Version:v1.0
#Email:admin@test.com
#Created time:2024-11-24 19:35:35
#Description:
#########################
echo "判断当前内核主版本是否为3,且次版本是否大于10"
main=$(uname -r | cut -d'.' -f1)
if [[ $main -eq 3 ]]; thenecho "当前内核主版本为3"
elseecho "当前内核版本不为3"
fisub=$(uname -r | cut -d'.' -f2)
if [[ $sub -gt 10 ]]; thenecho "当前内核次版本大于10"
elif [[ $sub -lt 10 ]]; thenecho "当前内核次版本小于10"
else echo "当前内核次版本等于10"
fi


判断nginx是否运行;如果没有,则运行它,并且开机启动

#!/bin/bash
#########################
#File name:4.sh
#Version:v1.0
#Email:admin@test.com
#Created time:2024-11-24 19:52:15
#Description:
#########################
echo "判断nginx是否运行;如果没有,则运行它,并且开机启动"
read -p "请输入想要查看的服务名:" service_name
is_open=$(systemctl is-active $service_name | grep n)
if ! [[ $is_open -eq 0 ]]; thenecho "$service_name服务是没有启动的,下面我将进行一个运行并开启开机启动的操作......"systemctl start $service_namesystemctl enable $service_nameelseecho "$service_name服务是开启的......"auto_open=$(systemctl is-enabled $service_name)if [[ $auto_open -eq 0 ]]; thenread -p "当前服务没有开启开机自动开启,是否需要开启(请输入y/n):" -n 1 is_auto_openechofor ((flag=1; flag<=3; flag++));doif [[ "$is_auto_open" == "y" || "$is_auto_open" == "n" ]]; thenbreakfiecho "请输入y/n!!!"doneif [[ "$is_auto_open" == "y" ]]; thensystemctl enable $service_name > /dev/nullecho "当前服务的开机自启动已开启"elif [[ "$is_auto_open" != "n" ]]; then echo "不按照我的来就不让你操作了!!!" fielseecho "当前服务开启了开机自动开启服务......"fi
fi


判断指定的主机是否能ping通,必须使用$1变量

#!/bin/bash
#########################
#File name:5.sh
#Version:v1.0
#Email:admin@test.com
#Created time:2024-11-24 20:57:48
#Description:
#########################
echo '判断指定的主机是否能ping通,必须使用$1变量'
echoping -c 1 $1 > /dev/null
if [ $? -eq 0 ]; thenecho "该ip地址目前存活......"
elseecho "该ip地址已断开连接......"
fi


完成一个报警脚本

要求如下:
        根分区剩余空间小于20%
        内存已用空间大于80%
        向邮箱发送告警邮件
        配合crond每5分钟检查一次

#!/bin/bash
#########################
#File name:6.sh
#Version:v1.0
#Email:admin@test.com
#Created time:2024-11-25 08:56:03
#Description:
#########################
echo "报警脚本,要求如下:根分区剩余空间小于20%内存已用空间大于80%向邮箱发送告警邮件配合crond每5分钟检查一次"
echo
# 计算根分区的剩余空间百分比  
root_ram=$(df / | tail -1 | awk '{print $5}' | sed 's/%//')  
# 计算内存已用百分比  
ram=$(free | grep Mem | awk '{printf "%.0f", $3/$2 * 100}')  if [[ $root_ram -gt 80 ]]; then  echo "根分区剩余空间小于20%"  if [[ $ram -gt 80 ]]; then   echo "内存已用空间大于80%"  echo "目前根分区和内存的容量都比较告急!!!,先发送邮箱提醒......" | mail -s "内存警告" 2711279281@qq.com  else  echo "内存也还比较充足"  fi  
else  echo "目前根分区空间充足"  
fi  


  
判断用户输入的是否是数字,如果是数字判断该数字是否大于10

#!/bin/bash
#########################
#File name:7.sh
#Version:v1.0
#Email:admin@test.com
#Created time:2024-11-25 19:49:01
#Description:
#########################
echo "判断用户输入的是否是数字,如果是数字判断该数字是否大于10"
echo
for ((n=3; n>0; n-- ))
doread -p "请输入一个数字:" numif [[ $num =~ ^-?[0-9]+(\.[0-9]+)?$ ]]; thenif [[ $num -gt 10 ]]; thenecho "当前数字大于10"elseecho "当前数字不大于10"fibreakelseecho "请输入数字,你还有$(($n -1))次机会"fi
done


对用户输入的任意两个整数进行算数运算

        要求的运算有和、差、乘积、商、余数,
        判断用户输入的参数是否是两个,如果不是,提示用法;
        判断用户输入的是否是整数,如果不是,则给出提示终止运行。

#!/bin/bash
#########################
#File name:8.sh
#Version:v1.0
#Email:admin@test.com
#Created time:2024-11-25 20:30:31
#Description:
#########################
echo "计算用户输入的任意两个整数的和、差、乘积、商、余数,判断用户输入的参数是否是两个,如果不是,提示用法;判断用户输入的是否是整数,如果不是,则给出提示终止运行。"
echo
for ((n=3; n>0; n--))
doread -p "请输入两个整数(中间用空格隔开),我会对其进行算术运算:" num1 num2if [[ $num1 =~ ^[0-9]+$ ]] && [[ $num2 =~ ^[0-9]+$ ]]; thenif [[ $num2 -eq 0 ]]; thenecho "除数不能为0!!!"elseecho "两数的和为$(($num1 + $num2))"echo "两数的差为$(($num1 - $num2))"echo "两数的乘积为$(($num1 * $num2))"echo "两数的商为$(($num1 / $num2))"echo "两数的余数为$(($num1 % $num2))"fibreakelseecho "请输入两个整数,你还有$(($n - 1))次机会!!!"fi
done

相关文章:

shell练习

开篇小贴士&#xff1a;为创建的sh&#xff08;当然可以是任何一个文件&#xff09;文件添加开头的注释 1、进入到家目录&#xff0c;然后通过 ls -a 查看全部文件 2、找到并编辑一个名为 .vimrc &#xff08;Vim编辑器的核心配置文件&#xff09;的配置文件&#xff0c;下图…...

ApiChain 从迭代到项目 接口调试到文档生成单元测试一体化工具

项目地址&#xff1a;ApiChain 项目主页 ApiChain 简介 ApiChain 是一款类似 PostMan 的接口网络请求与文档生成软件&#xff0c;与 PostMan 不同的是&#xff0c;它基于 项目和迭代两个视角管理我们的接口文档&#xff0c;前端和测试更关注版本迭代中发生变更的接口编写代码…...

Vercel 设置自动部署 GitHub 项目

Vercel 设置自动部署 GitHub 项目 问题背景 最近 Vercel 调整了其部署政策&#xff0c;免费版用户无法继续使用自动部署功能&#xff0c;除非升级到 Pro 计划。但是&#xff0c;我们可以通过配置 Deploy Hooks 来实现同样的自动部署效果。 解决方案 通过设置 Vercel 的 Dep…...

SQL进阶:如何跳过多个NULL值取第一个非NULL值?

NULL 一、问题描述二、ORACLE<一>、last_value () over ()<二>、lag () over()<三>、相关子查询 三、MYSQL<一>、全局变量<二>、coalesce() lag() over()<三>、相关子查询<四>、 recursive<五>、lag() over() min() over() …...

laravel 5.5 增加宏指令 joinSub, 省去->toSql() 和 addBinding($bindings);

laravel 5.5 增加宏指令 joinSub, 省去->toSql() 和 addBinding($bindings); 1. 在laravel5使用join 子查询时 $sub_query DB::table(table1)->select([table1.id, cate_id])->join(table2, table1.id, , table2.id)->where(table1.cate_id, 2)->orderBy(tabl…...

远程控制软件:探究云计算和人工智能的融合

在数字化时代&#xff0c;远程控制工具已成为我们工作与生活的重要部分。用户能够通过网络远程操作和管理另一台计算机&#xff0c;极大地提升了工作效率和便捷性。随着人工智能&#xff08;AI&#xff09;和云计算技术的飞速发展&#xff0c;远程控制工具也迎来了新的发展机遇…...

网络协议之DNS

一、DNS概述 域名系统&#xff08;Domain Name System&#xff0c;缩写&#xff1a;DNS&#xff09;是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库&#xff0c;能够使人更方便地访问互联网。DNS使用TCP和UDP端口53&#xff0c;通过递归查询请求的方式来…...

.net6 使用 FreeSpire.XLS 实现 excel 转 pdf - docker 部署

FreeSpire.XLS && Aspose.Cells包都可以实现。实现过程中发现如下问题&#xff1a; 本地测试通过&#xff0c; docker部署服务器后报错&#xff1a; The type initializer for Spire.Xls.Core.Spreadsheet.XlsPageSetupBase threw an exception. 由于缺少依赖&#xf…...

QML学习 —— 28、3种等待指示控件(附源码)

效果如下 说明 BusyIndicator应用于指示在加载内容或UI被阻止等待资源可用时的活动。BusyIndicator类似于一个不确定的ProgressBar。两者都可以用来指示背景活动。主要区别在于视觉效果,ProgressBar还可以显示具体的进度(当可以确定时)。由于视觉差异,繁忙指示器和不确定的…...

flutter 专题十一 Fair原理篇Fair逻辑动态化架构设计与实现

数据逻辑处理布局中的逻辑处理Flutter类型数据处理 一、数据逻辑处理 我们接触的每一个Flutter界面&#xff0c;大多由布局和逻辑相关的代码组成。如Flutter初始工程的Counting Demo的代码&#xff1a; class _MyHomePageState extends State<MyHomePage> {// 变量 in…...

利用开源图床的技巧与实践

随着互联网的普及&#xff0c;图片的使用变得越来越广泛。无论是个人博客、社交媒体还是企业网站&#xff0c;都离不开图片的呈现。而图床作为图片存储和管理的工具&#xff0c;可以帮助开发者和内容创作者高效地管理图片资源。本文将探讨如何利用开源图床&#xff0c;并提供相…...

C++数据结构与算法

C数据结构与算法 1.顺序表代码模版 C顺序表模版 #include <iostream> using namespace std; // 可以根据需要灵活变更类型 #define EleType intstruct SeqList {EleType* elements;int size;int capacity; };// Init a SeqList void InitList(SeqList* list, int capa…...

Paddle Inference部署推理(三)

三&#xff1a;Paddle Inference推理 导出模型 Paddle Inference支持使用飞桨静态图模型进行推理&#xff0c;您可以通过以下两种方式获取静态图模型&#xff1a; &#xff08;1&#xff09;飞桨框架导出推理模型 飞桨框架在训练模型过程中&#xff0c;会在本地存储最终训练…...

python(四)os模块、sys模块

一、os模块 os 模块提供了很多程序与操作系统直接交互的功能 名称描述示例os.getcwd()得到当前工作目录&#xff0c;即当前Python脚本工作的目录路径‘D:\python’os.listdir()返回指定目录下的所有文件和目录名>>> os.listdir()os.remove()函数用来删除一个文件>…...

Oracle 数据库 IDENTITY 列

IDENTITY列是Oracle数据库12c推出的新特性。之所以叫IDENTITY列&#xff0c;是由于其支持ANSI SQL 关键字 IDENTITY&#xff0c;其内部实现还是使用SEQUENCE。 不过推出这个新语法也是应该的&#xff0c;毕竟MyQL已经有 AUTO_INCREMENT列&#xff0c;而SQL Server也已经有IDENT…...

【前端】js vue 屏蔽BackSpace键删除键导致页面后退的方法

【前端】js vue 屏蔽BackSpace键删除键导致页面后退的方法 方法一&#xff1a;通过全局事件监听阻止 Backspace 导致页面后退 在 main.js 或组件的 mounted 中添加以下代码&#xff1a; //【前端】js vue 屏蔽BackSpace键删除键导致页面后退的方法 document.addEventListener…...

深入解密 K 均值聚类:从理论基础到 Python 实践

1. 引言 在机器学习领域&#xff0c;聚类是一种无监督学习的技术&#xff0c;用于将数据集分组成若干个类别&#xff0c;使得同组数据之间具有更高的相似性。这种技术在各个领域都有广泛的应用&#xff0c;比如客户细分、图像压缩和市场分析等。聚类的目标是使得同类样本之间的…...

ArcGIS应用指南:ArcGIS制作局部放大地图

在地理信息系统&#xff08;GIS&#xff09;中&#xff0c;制作详细且美观的地图是一项重要的技能。地图制作不仅仅是简单地将地理数据可视化&#xff0c;还需要考虑地图的可读性和美观性。局部放大图是一种常见的地图设计技巧&#xff0c;用于展示特定区域的详细信息&#xff…...

非root用户安装CUDA

1.使用nvidia-smi查看当前驱动支持的最高CUDA版本&#xff1a; 表示当前驱动最多支持cuda12.1 2.进入cuda安装界面&#xff0c;https://developer.nvidia.com/cuda-toolkit-archive&#xff0c;选择想要安装的版本&#xff0c;例如想要安装CUDA11.4&#xff1a; 如果需要查看ub…...

单点修改,区间求和或区间询问最值(线段树)

【题目描述】 给定一个长度为n的非负整数序列&#xff0c;接下来有m次操作&#xff0c;操作共有3种&#xff1a;一是修改序列中某个元素的大小&#xff0c;二是求某个区间的所有元素的和&#xff0c;三是询问某个区间的最大值。整数序列下标从1开始。n<10^5, m<10^5。 …...

线程与协程

1. 线程与协程 1.1. “函数调用级别”的切换、上下文切换 1. 函数调用级别的切换 “函数调用级别的切换”是指&#xff1a;像函数调用/返回一样轻量地完成任务切换。 举例说明&#xff1a; 当你在程序中写一个函数调用&#xff1a; funcA() 然后 funcA 执行完后返回&…...

前端导出带有合并单元格的列表

// 导出async function exportExcel(fileName "共识调整.xlsx") {// 所有数据const exportData await getAllMainData();// 表头内容let fitstTitleList [];const secondTitleList [];allColumns.value.forEach(column > {if (!column.children) {fitstTitleL…...

质量体系的重要

质量体系是为确保产品、服务或过程质量满足规定要求&#xff0c;由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面&#xff1a; &#x1f3db;️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限&#xff0c;形成层级清晰的管理网络&#xf…...

1.3 VSCode安装与环境配置

进入网址Visual Studio Code - Code Editing. Redefined下载.deb文件&#xff0c;然后打开终端&#xff0c;进入下载文件夹&#xff0c;键入命令 sudo dpkg -i code_1.100.3-1748872405_amd64.deb 在终端键入命令code即启动vscode 需要安装插件列表 1.Chinese简化 2.ros …...

【项目实战】通过多模态+LangGraph实现PPT生成助手

PPT自动生成系统 基于LangGraph的PPT自动生成系统&#xff0c;可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析&#xff1a;自动解析Markdown文档结构PPT模板分析&#xff1a;分析PPT模板的布局和风格智能布局决策&#xff1a;匹配内容与合适的PPT布局自动…...

IT供电系统绝缘监测及故障定位解决方案

随着新能源的快速发展&#xff0c;光伏电站、储能系统及充电设备已广泛应用于现代能源网络。在光伏领域&#xff0c;IT供电系统凭借其持续供电性好、安全性高等优势成为光伏首选&#xff0c;但在长期运行中&#xff0c;例如老化、潮湿、隐裂、机械损伤等问题会影响光伏板绝缘层…...

搭建DNS域名解析服务器(正向解析资源文件)

正向解析资源文件 1&#xff09;准备工作 服务端及客户端都关闭安全软件 [rootlocalhost ~]# systemctl stop firewalld [rootlocalhost ~]# setenforce 0 2&#xff09;服务端安装软件&#xff1a;bind 1.配置yum源 [rootlocalhost ~]# cat /etc/yum.repos.d/base.repo [Base…...

tomcat入门

1 tomcat 是什么 apache开发的web服务器可以为java web程序提供运行环境tomcat是一款高效&#xff0c;稳定&#xff0c;易于使用的web服务器tomcathttp服务器Servlet服务器 2 tomcat 目录介绍 -bin #存放tomcat的脚本 -conf #存放tomcat的配置文件 ---catalina.policy #to…...

实战三:开发网页端界面完成黑白视频转为彩色视频

​一、需求描述 设计一个简单的视频上色应用&#xff0c;用户可以通过网页界面上传黑白视频&#xff0c;系统会自动将其转换为彩色视频。整个过程对用户来说非常简单直观&#xff0c;不需要了解技术细节。 效果图 ​二、实现思路 总体思路&#xff1a; 用户通过Gradio界面上…...

stm32wle5 lpuart DMA数据不接收

配置波特率9600时&#xff0c;需要使用外部低速晶振...