【Shell编程规范与变量】

news2024/10/7 17:25:59

目录

  • 一、Shell脚本的概述
  • 二、Shell的作用
    • 2.1、用户的登录Shell
    • 2.2、Shell脚本的分类
  • 三、Shell脚本的构成
    • 1、编写shell脚本的规范
    • 2、运行shell脚本
      • 3、方法一 、指定路径命令,要求文件必须有 x 权限
      • 4、方法二 、指定shell来解释脚本,不要求文件必须要有 x 权限
    • 3、运行Shell脚本的总结
  • 四、重定向与管道操作
    • 1、交互式硬件设备
    • 2、重定向操作
      • 1、重定向输入
      • 2、重定向输出
      • 3、重定向追加
      • 4、标准错误输出
      • 5、标准错误追加
      • 6、混合输出
    • 3、管道操作符号“|”
  • 五、Shell变量的作用、类型
    • 1、变量的作用
    • 2、变量的类型
  • 六、自定义变量
    • 1、定义一个新的变量
    • 2、查看变量的值
    • 3、赋值时使用引号
    • 4、从键盘输入内容为变量赋值
    • 5、设置变量的作用范围
    • 6、整数变量的运算
  • 七、特殊的Shell变量
    • 1、环境变量
    • 2、常见的环境变量
    • 3、只读变量
    • 4、位置变量


一、Shell脚本的概述

1、Shell脚本的概念:

将要执行的命令按顺序保存到一个文本文件
给该文件可执行权限
可结合各种Shell控制语句以完成更复杂的操作

2、Shell脚本应用场景:

重复性操作
交互性任务
批量事务处理
服务运行状态监控控
定时任务执行

二、Shell的作用

Shell的作用一命令解释器,“翻译官”

介于系统内核与用户之间,负责解释命令行
在这里插入图片描述

2.1、用户的登录Shell

登录后默认使用的Shell程序,一般为 /bin/bash。
不同Shell的内部指令、运行环境等会有所区别

bash: 基准于GNu的框架下发展出的she11

csh: 语法有点类似于c语言的she11

tcsh: 整合了csh,提供更多的功能

sh: 已经被bash所替换。

nologin: 奇怪的shel1,这个shell可以让用户无法登录主机

注: bash (/bin/bash) 是目前大多数 Linux 版本采用的默认 shell。
请添加图片描述

Shell是一个面向字符串的编程语言,可以跟Python之类的其他语言配合起来,比如某个复杂的功能使用一个thon脚本来实现,然后在shel1中调这个脚本实现较复杂的功能:或者反过来,在Python脚本中调用外部的Shell脚本来提高自动化的效率,也是可以的。

2.2、Shell脚本的分类

面向对象 : JAVA , PYTHON , C++, C# , GO
面向过程 : C , shell

强类型语言: JAVA , C , C++ , C# , GO
编译型语言,执行前需要先编译,运行速度快

弱类型语言: PYTHON , Shell , PHP
解释性语言,不需要编译即可直接执行,常用于作脚本

三、Shell脚本的构成

1、编写shell脚本的规范

1)脚本声明:

#!/bin/bash

2)注释信息: 行首以#号开头定义注释信息,被注释的行内容将不会被执行

3)可执行语句:编写要执行的脚本代码

cd /opt  进入opt目录
vim first.sh   进入文件里编写好shell脚本

在这里插入图片描述

2、运行shell脚本

3、方法一 、指定路径命令,要求文件必须有 x 权限

chmod +x first.sh
给这个shell脚本增加执行权限

可以使用相对路径和绝对路径来运行脚本
在这里插入图片描述
如果不增加权限的话就会使用不了shell脚本,不管是用绝对路径和相对路径都显示权限不足
在这里插入图片描述

通过脚本就可以查看到在boot目录里找到以vm为开头的文件了,且不需要换目录查看
在这里插入图片描述

4、方法二 、指定shell来解释脚本,不要求文件必须要有 x 权限

1、sh

sh 脚本路径: sh first.sh

在这里插入图片描述

2、source

source 脚本路径: 
.first.sh 或者 source first.sh

在这里插入图片描述在这里插入图片描述

3、运行Shell脚本的总结

1)用绝对/相对路径指定脚本文件运行,需要执行用户拥有执行权限x脚本会在子shell环境中运行

2)用 bash/sh 程序指定脚本文件运行,不需要执行权限,脚本会在子shell环境中运行

3)用 source/. 指定脚本文件运行,脚本会在当前shell环境中运行(会影响当前所在目录、变量的值 等因素)

四、重定向与管道操作

1、交互式硬件设备

·标准输入: 从该设备接收用户输入的数据
·标准输出: 通过该设备向用户输出数据
·标准错误: 通过该设备报告执行出错信息

类型设备文件文件描述编号默认设备
标准输入/dev/stdin0键盘
标准输出/dev/stdout1显示器
标准错误输出/dev/stderr2显示器

2、重定向操作

重定向操作

在这里插入图片描述

1、重定向输入

重定向输入前要先关闭防火墙
举例:
使用文件里的数据来设置为用户的密码

在这里插入图片描述

2、重定向输出

如果文件不存在,重定向输出也会创建一个文件来进行存放内容
在这里插入图片描述

3、重定向追加

在这里插入图片描述

4、标准错误输出

之将错误的信息放到指定的文件中,并且覆盖
在这里插入图片描述

5、标准错误追加

不覆盖之前错误内容,在内容的最后面进行追加
在这里插入图片描述

6、混合输出

将正确和错误的,都可以放在一个文件里
在这里插入图片描述
扩展:
2>&1 : 将标准错误输出重定向到标准输出

本来1-->屏幕(1指向屏幕)
执行>log后,1-->log.txt (1指向log.txt)
执行2>&1后,2-->1
 (2指向1,而1指向log.txt,因此2也指向了log.txt)

3、管道操作符号“|”

将左侧的命令输出结果,作为右侧命令的处理对象

在这里插入图片描述

五、Shell变量的作用、类型

1、变量的作用

·用来存放系统和用户需要使用的特定参数 (值)
·变量名:使用固定的名称,由系统预设或用户定义
·变量值:能够根据用户设置、系统环境的变化而变化

2、变量的类型

·自定义变量: 由用户自己定义、修改和使用
·特殊变量:环境变量,只读变量,位置变量,预定义变量

六、自定义变量

1、定义一个新的变量

变量名为以字母或下划线开头,区分大小写,建议全大写

变量名=变量值

在这里插入图片描述

2、查看变量的值

echo $变量名

在这里插入图片描述

如果中间有空格,加上引号括起来
在这里插入图片描述

把这个变量名加上大括号以防混淆
在这里插入图片描述

3、赋值时使用引号

·双引号: 允许通过$符号引用其他变量值
·单引号: 禁止引用其他变量值,$视为普通字符
·反撇号: 命令替换,提取命令执行后的输出结果,·...·等同于 $(...

在这里插入图片描述

4、从键盘输入内容为变量赋值

创建一个shell脚本
在这里插入图片描述
给shell脚本提高权限
使用运行命令,看到设置的变量为脚本里设置的zhangsan

在这里插入图片描述

read [-p "提示信息"]   变量名

在shell脚本里设置一个read 通过键盘获取变量值,-p可以显示提示信息
在这里插入图片描述在这里插入图片描述

5、设置变量的作用范围

格式1: export 变量名

格式2: export 变量名=变量值

设置临时的全局变量,主机重启后就不生效了

在这里插入图片描述

实现永久开启变量

vim /etc/profile  进入开机自启的配置文件
设置为全局变量

在这里插入图片描述
如何设置完不想要重启,可以输入以下命令

source /etc/profile

在这里插入图片描述

6、整数变量的运算

expr 变量1  运算符  变量2 [运算符  变量3]...

在这里插入图片描述
或者使用双括号来运算

在这里插入图片描述

使用中括号来运算

在这里插入图片描述

使用let命令来进行运算

let i=10+20  ; echo $i 
let i++   i--    相当于 i=$[i + 1] 或 $[i - 1]
    i+=2  i-=2   相当于 i=$[i + 2] 或 $[i - 2]

在这里插入图片描述

在这里插入图片描述

七、特殊的Shell变量

1、环境变量

·由系统提前创建,用来设置用户的工作环境
·配置文件: /etc/profile – 全局有效
~/.bash _profile – 只对当前用户有效

2、常见的环境变量

在这里插入图片描述

通过可执行文件复制到PATH环境变量所指定的目录中

在这里插入图片描述

vim /etc/profile
进入环境变量配置文件里

export PATH=$PATH:/opt
不要忘记添加原来的值,不设置的话原来的值就没有了

source /etc/profile  重现加载配置文件

在这里插入图片描述在这里插入图片描述

没有添加PATN原有的配置文件的处理方法

/usr/bin/vi /etc/profile
进入这个配置文件里删除末尾的命令

source /etc/proile   重启启动配置文件

在这里插入图片描述

在这里插入图片描述

命令解释
PATH系统命令搜索路径
PWD当前所在目录
USER当前登录用户
HOME当前登录用户的家目录
SHELL当前登录用户的shell环境
LANG当前系统的语言和字符集编码
HISTSIZE历史命令条数

3、只读变量

用于变量值不允许被修改的情况

在这里插入图片描述

4、位置变量

表示 $n ,n为1~9之间的数字

vim third.sh   创建一个文件,在里面设置shell脚本

设置完后进行增权
chmod +x third.sh

$0 为脚本本身,$1 ~ $9 第一个到第九个位置变量,代表脚本后面跟的以空格相间隔的参数

在这里插入图片描述
由图可以看见,超过9的数是以$1为开头,后面加个0的数值

在这里插入图片描述

当超过第9位的变量时,可以加上大括号表示
例如:${10} 表示第10位置变量

在这里插入图片描述

这样就可以看见最后一位设置的就是指定的数值了
在这里插入图片描述

$* 不加双引号时,代表脚本后面跟的以空格相间隔的所有参数;
$@ 不加双引号时,代表脚本后面跟的以空格相间隔的所有参数;

在这里插入图片描述请添加图片描述

$*: 加上双引号后,会把脚本后面跟的以空格相间隔的所有参数当作一个整体
$@ :加上双引号后,效果不变,仍然会把每个参数当作一个个体

在这里插入图片描述
请添加图片描述

加入一个$#表示命令或者脚本要处理参数的个数
在这里插入图片描述在这里插入图片描述

$? : 代表上一条命令执行是否正常/成功,命令执行正常返回0,非0值均代表命令执行异常

在这里插入图片描述

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

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

相关文章

波奇学Linux:Linux基本指令

上文回顾:波奇学Linux:认识Linux和使用云服务器 本文再上文的基础上,学习Linux的基本指令 xhell:进入/退出全屏操作:alt enter 清空页面:clear 查看目录 pwd(print working directory):查看当前目录 ls(list)&am…

P1033 [NOIP2002 提高组] 自由落体

题目描述 在高为 �H 的天花板上有 �n 个小球,体积不计,位置分别为 0,1,2,⋯ ,�−10,1,2,⋯,n−1。在地面上有一个小车(长为 �L,高为 �K,距原点距离为 &…

【十进制 转 二进制】【二进制 转 十进制】10进制 VS 2进制【清华大学考研机试题】

10进制 VS 2进制 十进制转成二进制二进制 转成 十进制本题是高精度,如何做? 原题链接 本题我们先需要知道 十进制 如何转 二进制 二进制 如何转 十进制 十进制 如何转 二进制: 十进制转成二进制 例如 173 转成 二进制 就把173 短除法 除…

软件测试项目去哪里找?我都给你整理好了【源码+操作视频】

目录 一、引言 二、测试任务 三、测试进度 四、测试资源 五、测试策略 六、测试完成标准 七、风险和约束 八、问题严重程度描述和响应时间规范 九、测试的主要角色和职责 ​有需要实战项目的评论区留言吧! 软件测试是使用人工或者自动的手段来运行或者测定…

updateByPrimaryKey和updateByPrimaryKeySelective的区别

版权声明 本文原创作者:谷哥的小弟作者博客地址:http://blog.csdn.net/lfdfhl MyBatis Generator概述 MyBatis Generator是一个专门为MyBatis框架使用者定制的代码生成器,它可以快速的根据表生成对应的映射文件、接口文件、POJO。而且&#…

Ajax XHR请求

文章目录 AJAX 向服务器发送请求请求向服务器发送请求GET 还是 POST?GET 请求POST 请求url 服务器上的文件异步 True 或 False?AsynctrueAsync false AJAX 向服务器发送请求请求 XMLHttpRequest 对象用于和服务器交换数据。 向服务器发送请求 如需将请…

人脸识别 Face Recognition 入门

人脸识别 Face Recognition 入门概述 找论文搭配 Sci-Hub 食用更佳 💪 Sci-Hub 实时更新 : https://tool.yovisun.com/scihub/ 公益科研通文献求助:https://www.ablesci.com/ 人脸识别流程:检测、对齐、(活体)、预处理…

图像融合方向:《GP-GAN: Towards realistic high-resolution image blending》论文理解

《GP-GAN: Towards realistic high-resolution image blending》论文理解 论文:《GP-GAN: Towards realistic high-resolution image blending》ACM MM 2019 链接:GP-GAN: Towards realistic high-resolution image blending 本文目录 《GP-GAN: Toward…

免费好用的数据可视化软件工具

如果你正在找数据可视化软件工具,或者你正想尝试新的可视化软件,那么接下来的内容一定要认真看。 通过对行业的了解及广泛的研究,小编整理了一份业内绝对最好的且免费的数据可视化工具列表,重点是免费。 D3.js JavaScript 库&a…

【C进阶】-- 动态内存管理

目录 1. 为什么存在动态内存分配❓ 2. 动态内存函数的介绍 2.1 malloc和free✅ ①申请:1️⃣ ②使用:2️⃣ ③释放:3️⃣ 2.2 calloc 🧨与malloc的区别: 2.3 realloc 3.常见的动态内存错误 3.1 对NULL指针的解引用操作 &#x1f3…

这5个PNG免抠素材网站,可商用,赶紧马住了

推荐5个超好用的PNG素材网站,免费下载,还可以商用,建议收藏起来~ 1、菜鸟图库 https://www.sucai999.com/searchlist/66008----all-0-1.html?vNTYxMjky 网站主要分享设计素材为主。像平面海报、免抠元素、背景图片、UI界面模板、图标、电商…

流辰信息微服务平台:数字化转型的优良工具!

在互联网迅猛发展的今天,越来越多的企业倾向于新兴领域带来的便利性和灵活性了,其中,微服务平台就是其中之一了。流辰信息微服务平台是专注于研发系统开发、数据治理、数据分析的平台,致力于为各中大小型企业提供优质的微服务解决…

修炼汇编语言第二章:内存地址空间(概述)

目录 前言 一、主板和接口卡 二、存储器各类芯片 三:内存地址空间 总结 前言 什么是内存地址空间呢?如果地址线为10,那么可以寻址1024个地址空间,这1024个地址空间就构成这个CPU的内存地址空间,下面本文将会介绍…

HTB-DevOops

HTB-DevOops 信息收集5000端口 立足python反序列化攻击XEE读取SSH root 信息收集 5000端口 根据文字所述,下面的图片是feed.py。 目录扫描 /upload如下: 上传测试xml文件。 得到反馈 怀疑是标签不匹配,尝试寻找匹配的标签。前面首页有提…

linux平台移植qt

话不多说直接开干,首先需要下载源码包,进入网址https://download.qt.io/archive/qt/进行下载对应的版本即可,比如我这里下载5.12.12版本的,如下图找到即可。 然后把下载的包放到服务器上进行解压tar xpf qt-everywhere-src-5.12.…

2023PGA塑料行业发展新机遇

什么是PGA塑料? PGA塑料是生物降解塑料中的一种,具有可完全分解的酯结构和降解速度最快的脂肪族聚酯类高分子材料,且无需特定降解条件,同时具有良好的耐高温性、机械强度、降解速率和生物相容性。 从政策面来看,随着中国“限塑…

【问题记录】docker 搭建 minio

一、搭建过程 docker 搜索minio镜像 docker search miniodocker 拉取镜像 docker pull minio/miniodocker 启动 minio docker run -p 9900:9900 --name minio -d --restartalways -e MINIO_ACCESS_KEYminio -e MINIO_SECRET_KEY1qazWSX -v /usr/local/minio/data:/data -v …

【2023软考】信息系统监理师与系统集成项目管理工程师哪个更好考?

肯定是系统集成项目管理工程师更好考。 软考信息系统监理师是一项国家级专业职业资格证书,是我国信息技术行业的重要职业资格之一。软考信息系统监理师主要从事信息系统建设项目的监理和管理工作,包括项目前期准备、项目实施阶段和项目验收阶段的监理和…

Databend 开源周报第 90 期

Databend 是一款现代云数仓。专为弹性和高效设计,为您的大规模分析需求保驾护航。自由且开源。即刻体验云服务:https://app.databend.cn 。 Whats On In Databend 探索 Databend 本周新进展,遇到更贴近你心意的 Databend 。 元数据优化 最…

推荐给工控人的时间管理办法

艾维利时间管理法 Ivy Lee Time Management Act 艾维利时间管理法是一种被广泛采用的时间管理方法,它能够帮助人们更好地利用时间和精力。该方法通过将任务分为三类,即A类、B类和C类,来确定工作的优先级。在这种方法中,A类任务是…