首页 > 系统相关 >shell脚本学习以及案列练习

shell脚本学习以及案列练习

时间:2024-07-27 11:54:26浏览次数:17  
标签:脚本 语句 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 可以用来跳过一次循环,跳过后循环继续,直到循环停止
示例

编辑

运行

(四)九九乘法表

运行结果:

标签:脚本,语句,shell,变量,练习,案列,判断,字符串
From: https://blog.csdn.net/ln2915275834/article/details/140707778

相关文章

  • 2024736DP专项练习赛
    前言比赛链接榜上那个冒着蓝光的就是我……提交记录跟答辩一样……\(\color{#F8BBD0}Heldivis%%%%%%%%%%%%%%%%%%%\)吐槽一下,虽然挂着DP专题赛的名字,但除了T1T3以外,全是记搜题(虽然好像只有四道题来着)。T1签到题,\(n\)范围很小,先用区间dp求出任意区间达到最终状态......
  • 学习c语言第十四天(调试+练习)
    一、调试所有发生的事情都一定有迹可循,如果问心无愧,就不需要掩盖也就没有迹象了,如果问心有愧就必然需要掩盖,那就一定会有迹象,迹象越多就越容易顺藤而上,这就是推理的途径。顺着这条途径顺流而下就是犯罪,逆流而上,就是真相。1.什么是调试调试(英语:Debugging/Debug),又称除错,......
  • 怎么练习BFS?题单给您列好啦!
    前面是介绍,后面是题单哦,准备了两份,要是链接失效可以按照第一份搜题。BFS广度优先搜索(Breadth-First-Search)广度优先搜索算法(BreadthFirstSearch),又称为"宽度优先搜索",BFS是用于图的查找算法(要求能用图表示出问题的关联性)。BFS可用于解决2类问题:1.从A出发是......
  • Shell脚本编程(二)
    目录一、Shell程序中使用变量1、变量赋值2、访问变量值3、键盘输入变量值4、实例15、实例2二、表达式的比较1、字符串比较1.1、实例11.2、实例22、数字比较2.1、实例13、逻辑操作3.1、实例14、文件操作4.1、实例14.2、实例2一、Shell程序中使用变量1、变量......
  • shell脚本编程
    一、shell基础1、shell概念shell英文翻译过来是外壳的意思,作为计算机语言来理解可以认为它是操作系统的外壳。可以通过shell命令来操作和控制操作系统,比如Linux中的shell命令就包括ls、cd、pwd等等。shell在内核的基础上编写的一个应用程序,它连接了用户和Linux内......
  • 前端练习<Html&CSS>——悬浮抽卡片(附完整代码及实现效果)
    这个小练习来源于b站up小K师兄,大家可以通过下面的链接学习哦~up讲的非常详细。写一个好玩的悬浮抽卡片效果~先看一下效果:1.鼠标没有放置到card上2.鼠标放到card上,所有card呈角度散开 3.单击选中某一张卡片,卡片上浮高亮,其他卡片变暗 HTML部分<html> 标签定义了整个H......
  • 运行 Spark-Shell 程序时出现错误
    我正在尝试创建SparkShell程序,但在运行时出现错误。下面是我正在执行的代码。frompyspark.sqlimport*frompysparkimportSparkConffromlib.loggerimportLog4j#conf=SparkConf()#conf.set("spark.executor.extraJavaOptions","-Dlog4j.configuration=f......
  • 容易的多元拉格朗日反演练习题
    你说得对,但确实和题目没有一点关系。模拟赛记录下午出。题面看到Alice和Bob就知道是什么题了。思路这个题开始先胡乱想想,发现按照博弈论的思路,那么每次Bob行动一步后,Alice需要有对应的策略,也就是说,若Alice必胜,这次行动应该是固定的最优策略步。然后再代入一下,如果......
  • E19.【C语言】练习:数组
    有序序列合并描述输入两个升序排列的序列,将两个序列合并为一个有序序列并输出。数据范围:1≤n,m≤1000 ,序列中的值满足0≤val≤30000输入描述:输入包含三行,第一行包含两个正整数n,m,用空格分隔。n表示第二行第一个升序序列中数字的个数,m表示第三行第二个升序序列中数......
  • MySQL基础练习20题,看看你的sql基础man不man
    数据获取表的数据信息(sql文件)放在这个链接里了,提取码:52xz,需要的自行提取。数据来自网上的练习,已经给小伙伴们总结好了。https://pan.baidu.com/s/11YMWaXtZb9K60cpOuYTwag将数据导入到mysql中大家可以直接在navicat运行该脚本,就可以直接导入数据了,如果遇到问题很可能是编码......