shell脚本学习以及案列练习

(一)用shell脚本自动化部署安装nginx

首先创建一个目录,用于存放该脚本

 mkdir -p /root/shell

然后创建脚本文件

vim /root/shell/install_nginx.sh

再给脚本文件加上执行权限

 chmod +x  /root/shell/install_nginx.sh
然后执行,就可自动安装nginx了

到这里就编译成功了

(二)shell知识点学习

1.输入输出,以及判断

2.基础脚本编辑练习

(1)账户查询脚本

vim zifu.sh

(2)添加用户并修改密码脚本

vim createacc

3.基本概念

什么是shell?

shell脚本就是由Shell命令组成的执行文件,将一些命令整合到一个文件 中,进行处理业务逻辑,脚本不用编译即可运行,它从一定程度上减轻 了工作量,提高了工作效率,还可以批量、定时处理主机,方便管理员 进行设置或者管理。

可以简单将shell看作是用户和操作系统之间的命令解释器

4.shell 脚本编写注意事项

shell脚本名称命名一般为英文、大写、小写、后缀以.sh结尾

不能使用特殊符号、空格 名称要写的一眼可以看出功能,也就是顾名思义

shell脚本首行需要#!/bin/bash开头

shell脚本变量不能以数字、特殊符号开头,可以使用下划线 _,但不能 用破折号——

Shell 的返回值:运行一条命令,都会有一个返回值。 0 代表执行正常,非 0 代表命令执行异常。

5.shell 脚本的构成

        (1)脚本声明

        (2)注释信息

        (3)可执行语句

(三)shell脚本的变量

1.变量命名规则:

必须由大写字母、小写字母、下划线、数字,并且首字 母不能是数字

2.变量值的类型:

值的类型会分为整型、浮点型、字符串型、布尔型等, 而且使用变量需要指定类型Shell 默认的变量类型都是字符串,无需指 定类型

3.变量的分类

(1)自定义变量

        由用户自己定义、使用和修改

        变量名=值中,等于号=之前和之后不能有空格

(2)环境变量

         由系统维护,用于设置工作环境       

         $PWD

        $SHELL

        $USER

        $PATH        

PATH变量用于设置可执行程序的默认搜索路径,可以修改全局变 量文件/etc/profile 或修改某用户家目录下的~/.bash_profile文件永久改 变环境变量。

 [root@localhost ~]# env # 查看所有环境变量

(3)位置变量

        通过命令行给脚本程序传递参数 (也属于预定义变量)

        为了在使用Shel脚本程序时,方便通过命令行为程序提供操作参数, Bash引入了位置变量的          概念位置变量有 ,n,n为1~9之间的数字

        $0:第一个字段表示命令名或脚本名称

        $1:脚本要处理的第一个参数

        $2:脚本要处理的第二个参数

        Shell脚本最多可以直接处理9个参数

( 4 )预定义变量
        Bash中内置的一类变量,不能直接修改
        预定义变量是Bash程序预先定义好的一类特殊变量,用户只能使用预定义变量,而不能创建          新的预定义变量,也不能直接为预定义变量赋值。
        $*:将所有参数作为整体
        $@:单个参数的组合,每个参数占一行
        $0:保存了脚本名称
        $?:保存命令或脚本的执行状态码
        $#:保存脚本要处理的参数的个数
4 、变量的定义与输出
( 1 )定义一个新的变量
格式:变量名 = 变量值
注意:变量名必须以字母或下划线开头,严格区分大小写
 
(2)变量符号运用  
双引号:允许通过 $ 符号引用其他变量值
单引号:禁止引用其他变量值, $ 视为普通字符
反撇号: 或 $(): 命令替换,提取命令的执行结果
 
(3)输入和输出  
输入格式: read [-p " 显示的提示信息 "] 变量名
输出格式: echo $ 变量名
5 、变量的作用范围
默认情况下,新定义的变量只在当前 Shell 环境中有效,因此称为局部变量。当进入子程序或新的子shell 时,局部变量将无法再使用。
为了使用户定义的变量在所有子 Shell 环境中能够继续使用,减少重复设置工作,可以通过内部命令export 将指定的变量导出为 “ 全局变量 ” 。
格式 1 : export 变量名
格式 2 : export 变量名 = 值
  6、变量的数学运算
(1)整数运算  
格式: expr 变量 1 运算符 变量 2 运算符 变量 3....
运算符: + - * / ( + - × ÷ )
  (2)精度计算  
精度计算前,先安装bc这个软件才可进行,否则只能进行整数运算
 yum -y install bc

(四)条件判断语句

1 、 if 单分支语句

2 、 if 多分支语句

条件判断:可以有数字判断、字符串判断、⽂件判断等

(一)数字判断
1 、格式
-eq : equal ,等于,一般用于 [ $? -eq 0 ] ,也就是判断上条命令返回值等于 0 ,直接数字 -eq 数
字也可以 equals
-ne : not equal ,不等于,一般用于 [ $? -ne 0 ] ,判断上条命令返回值不等于 0
-gt : greater than ,大于
-ge : greater or equal ,大于或等于
-lt : less than ,小于
-le : less or equal ,小于或等于

2.创建简单的数字判断脚本

(二)字符串判断

1 、格式

[ 字符串 1 == 字符串 2 ] 字符串内容相同
[ 字符串 1 != 字符串 2 ] 字符串内容不同
[ -z 字符串 ]
字符串内容为空
[ -n 字符串 ]
字符串内容不为空

2.案例

( 1 )创建简单的字符串判断脚本

( 2 )创建 rpm 查询软件是否安装的脚本

(三)文件判断
文件、目录、权限的判断
1 、格式
[ 操作符 文件或目录 ]
常用的测试操作符 :

2.案例

nginx 安装脚本优化,判断是否已安装 nginx

(五)与或判断

判断多个条件
多个条件其中一个成立,或
多个条件都要成立,与
或运算判断: ||
或,两个条件满足其一即可,还有 -o
与运算判断: && 与,两个条件都得满足才行,还有 -a
1 、或运算判断
这两个条件需满足其一
2、与运算判断 
这两个条件都得满足
3 、混合判断

(六)多重判断语法 elif

1  if 多分支语句结构

2 、案例

(七)多重判断的 case 语句

case 语句是多分支选择语句, case 还支持正则。

1、 case 语句的结构

2.案例

提示用户输入一个字符,判断该字符是字母、数字或者其他字符的脚本

3、案例

输入分数变量,然后判定等级

运行

(八)脚本循环语句

(一)for 循环
1 、作用
读取不同的变量值,以逐个执行同一组命令
2 、结构

取值列表:数字范围、字符串、多个字符串、提前设定好的变量等
for 默认以所有的空白字符进行分隔 : tab 、空格、回车,去循环处理
分隔成几段就循环几次

3 、示例

分隔值循环

在命令结果中循环

检测某个网段的存活主机

判断包是否已安装

(二)while循环

1 、作用
重复测试某个条件,只要条件成立则反复执行
2 、结构

3 、 while 和 for 区别
while 循环也有条件判断,当条件成立的时候,会循环执行。当条件不成立退出
if 判断当条件成立时,会执行一次,然后退出。当条件不成立时直接退出
4 、示例
批量添加用户
创建时交互输入用户前缀、创建用户个数、初始密码、过期时间 ( 可选设置 ) ,用户首次登陆强制要
求修改密码

(三) break 和 continue
break 直接结束循环,循环立即退出
continue 可以用来跳过一次循环,跳过后循环继续,直到循环停止
示例

编辑

运行

(四)九九乘法表

运行结果:

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

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

相关文章

新手必备:iPhone新机官网验机流程详解

目录 一、准备工作 二、外包装检查 三、序列号查询 四、开箱验机 五、开机验机 六、功能检测 七、售后服务验证 八、总结 一、准备工作 检查包裹:确保快递包裹完好无损。准备录像设备:使用另一台设备录制整个验机过程,以防日后发生纠…

【JAVA开发笔记】Reids下载、安装、配置-Windows篇(超详细,含Redis可视化管理工具!!!)

目录 1. Redis 简介 2. 下载 Redis 安装包 3. 开启 Redis 服务 4. 配置环境变量 5. Redis 服务注册为系统服务 6. Redis 服务测试和简单使用 7. 下载安装 Redis 管理工具 8. 管理工具连接 Redis 服务器 1. Redis 简介 Redis(Remote Dictionary Server&…

基于GitHub page和Hexo主题搭建个人博客(win)

1.安装git git官网下载地址:Git - Downloads (git-scm.com) (1)下载:进入官网,选择对应版本下载,得到.exe文件 (2)安装:打开.exe文件,进行如下操作 (3)安装好后,右击鼠标,点击显示…

运维团队如何借助分布式部署提升监控效率与可靠性

随着企业IT基础设施的日益复杂和分布式架构的广泛应用,传统的监控解决方案已经难以满足现代运维团队的需求。在这样的背景下,分布式部署作为一种新型的监控架构,以其灵活性、可扩展性和高可用性,成为了运维团队提升监控效率与可靠…

JDK21下载+安装+环境配置教程(Windows11系统)

下载地址: Java Downloads | Oracle 中国 下载完这样 双击 然后下一步就完事了(如果想换路径就换一下) 配置JDK的环境变量,鼠标右键此电脑--属性--高级系统设置 1.点击新建系统变量名为"JAVA_HOME",变量值为…

推荐系统三十六式学习笔记:工程篇.常见架构25|Netflix个性化推荐架构

目录 架构的重要性经典架构1.数据流2.在线层3.离线层4.近线层 简化架构总结 你是否曾经觉得算法就是推荐系统的全部,即便不是全部,至少也是嫡长子,然而实际上,工程实现才是推荐系统的骨架。如果没有好的软件实现,算法不…

vue3里将table表格中的数据导出为excel

想要实现前端对表格中的数据进行导出,这里推荐使用xlsx这个依赖库实现。 1、安装 pnpm install xlsx 2、使用 import * as XLSX from "xlsx"; 直接在组件里导入XLSX库,然后给表格table通过ref创建响应式数据拿到table实例,将实…

大数据平台之HBase

HBase是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,是Apache Hadoop生态系统的重要组成部分。它特别适合大规模结构化和半结构化数据的存储和检索,能够处理实时读写和批处理工作负载。以下是对HBase的详细介绍。 1. 核心概念 1.1 表&#x…

自定义prometheus监控获取nginx_upstream指标

1、前言 上篇文章介绍了nginx通过nginx_upstream_check_module模块实现后端健康检查,这篇介绍一下如何自定义prometheus监控获取nginx的upstream指标来实时监控nginx。 2、nginx_upstream_status状态 支持以下三种方式查看nginx_upstream的状态 /status?formatht…

【sklearn实战】sklearn 数据集之 Toy datasets

scikit-learn 内置的一些小型标准数据集,不需要从某个外部网站下载任何文件。 一 鸾尾花数据集(Iris Dataset) 1.1 简介 该数据集包含了 150 个鸢尾花的数据,其中每个数据点都有 4 个变量(萼片长度、萼片宽度、花瓣长…

张量Tensor

借助 PyTorch 实现深度神经网络 - 张量和数据集 - 第 1 周 | Coursera 张量概述 张量运算的本质是向量和矩阵运算。神经网络的输入、输出、参数都将采用张量进行。Pytorch中的张量可以和Python中的numpy相互转换,这使得Pytorch在GPU上应用成为可能。神经网络中的参…

等级保护测评解决方案

什么是等级保护测评? 网络安全等级保护是指对国家重要信息、法人和其他组织及公民的专有信息以及公开信息和存储、传输、处理这些信息的信息系统分等级实行安全保护,对信息系统中使用的信息安全产品实行按等级管理,对信息系统中发生的信息安全…

多机构发布智能锁2024半年报:德施曼上半年线上全渠道销额稳居第一

近日,权威机构奥维云网、洛图科技先后发布智能门锁2024半年报,报告均指出上半年中国智能门锁线上渠道持续增长。奥维云网数据显示,2024上半年线上渠道销量同比增长22.7%,成行业增长最快的部分;洛图科技强调&#xff0c…

Baseline_bm25实现文本检索

大一还沉迷NLP时写的第一篇笔记,才发现在草稿箱躺了这么久oO 题目来源:飞桨AI Studio - 人工智能学习与实训社区 (baidu.com) 1.解压数据集 !unzip /home/aistudio/data/data205651/wenshu_ms_dataset.zip -d dataset 如果已经解压过了出现&#xff0…

Github 2024-07-26 Java开源项目日报 Top10

根据Github Trendings的统计,今日(2024-07-26统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Java项目9HTML项目1TypeScript项目1非开发语言项目1JavaGuide - Java 程序员学习和面试指南 创建周期:2118 天开发语言:Java协议类型:Apache…

Photos框架 - 自定义媒体选择器(UI预览)

引言 在前面的博客中我们已经介绍了使用媒体资源数据的获取,以及自定义的媒体资源选择列表页。在一个功能完整的媒体选择器中,预览自然是必不可少的,本篇博客我们就来实现一个资源的预览功能,并且实现列表和预览的数据联动效果。…

不再担心数据丢失:用rsync打造你的自动化备份解决方案

在现代IT环境中,数据备份是一项至关重要的任务。无论是个人文件还是企业数据,都需要有可靠的备份机制来防止数据丢失。今天,我们将介绍一种高效的备份方案:使用rsync实现自动化备份目录。 什么是rsync? rsync 是一个开…

大学计算机专业主要课程及概要介绍

大学计算机专业主要课程及概要介绍 大学计算机专业是一门涵盖广泛领域的学科,旨在培养学生在计算机科学与技术方面的理论知识与实践能力。该专业课程设置丰富多样,涵盖了从基础理论到高级应用的多个方面。以下是一些主要的课程及其概要介绍:…

共享栈、双端队列

top指向的内存有内容 上图右图出队列受限制(右边红笔出来的箭头出来)

C语言-TCP通信创建流程

TCP通信创建流程 1. 客户端创建TCP连接 在整个流程中, 主要涉及以下⼏个接⼝socket() : 创建套接字, 使⽤的套接字类型为流式套接字connect() : 连接服务器send() : 数据发送recv() : 数据接收创建套接字 首先,我们需要创建套接字,套接字是通信的基础…