Linux学习第十四节-shell脚本

news2024/9/24 1:23:16

1.Shell概述

Shell连接了用户和Linux内核,他可以解释用户输入的命令传输给内核,让用户可以更加方便的使用Linux系统;

Shell本身并不是内核的一部分,他只是站在内核的基础上编写一个应用程序;

Shell具备编程的能力,也是一种语言;

Shell语言支持大部分编程语言都具备的功能:if判断、for循环、变量、数组、函数、加减乘除、逻辑运算。

2.规范的shell脚本组成

3.如何写好一个shell脚本

①明确任务需求;

②按需求整理好每一个步骤,先做什么,后做什么;

③运行脚本、并根据运行结果排除错误;

④优化脚本并达到最终效果。

4.脚本执行方式

①赋予执行权限后,可以绝对路径或者当前路径执行

绝对路径:/root/hello.sh

相对路径:脚本同级目录下./hello.sh

②调用解释器执行脚本文件

查看系统有哪些解释器,都可以使用:cat /etc/shells

执行脚本:bash hello.sh

5.编写脚本

步骤:vim xxx.sh  chmod u+x xxx.sh  ./xxx.sh

①Hello world

②创建用户名和密码

 ③查看系统信息

④搭建本地yum源(正常版)

⑤搭建本地yum源(升级版)

6.常用特殊符号

①“” #双引号,引用整体
②‘ ’ #单引号,引用整体并取消所有特殊字符含义
③$[] #四则运算(+ - * / % 取余数)
④$() #将命令的输出结果作为参数
⑤`` #反撇 将命令的输出结果作为参数 

举例:

①[root@localhost ~]# echo "$PATH" 表示引用整体,不屏蔽特殊符号的功能  

②[root@localhost ~]# echo '$PATH' 表示引用整体,屏蔽特殊符号的功能

③[root@localhost ~]# echo $[1+1] 表示四则运算

④[root@localhost ~]# touch $(date +%F)-a.txt 表示$()取命令结果作为参数  

⑤[root@localhost ~]# touch `date +%F`-x.txt 表示``取命令结果作为参数  

7.变量

以固定的名称存放可能变化的值,提高脚本的灵活度来适应多变的环境。
定义变量:变量名=变量值,如:a1=abc(等号两边不要有空格);

取消变量:unset 变量名。
定义变量注意事项:
①变量名由字母/数字/下划线组成,区分大小写,不能以数字开头,不要使用命令和特殊符号;
②若指定的变量名已经存在,相当于为此变量重新赋值。

举例:

①定义变量并输出
[root@localhost ~]# xx=5

[root@localhost ~]# echo $xx

[root@localhost ~]# echo $[xx+5]

②通过变量定义用户名

8.read标准输入取值

read 读取用户在键盘上输入的内容,并把内容存放在变量里,可以降低脚本的使用难度。
命令格式:read -p “提示信息” 变量名

举例:

①交互式创建用户脚本

9.变量种类

环境变量:变量名一般都大写,用来设置用户/系统环境;
位置变量:bash内置,存储执行脚本时提供的命令参数;
预定义变量:bash内置,可直接调用的特殊值,不能直接修改;
自定义变量:用户自定义。

环境变量举例:
①查看系统所有环境变量

[root@localhost etc]# env
②获取变量值

[root@localhost etc]# echo $SHELL

③查看系统所有变量,包括用户自定义变量

[root@localhost ~]# set

[root@localhost ~]# set | grep $a

位置变量:

$0 #脚本名称

$1 #第一个参数
$2 #第二个参数
$3 #第三个参数
$4 #第四个参数
$n… #第n个参数
预定义变量 
$0 #代表脚本本身
$* #显示所有参数内容
$# #显示有多少个参数
$? #显示上一条命令的执行结果(0代表正确,非0代表错误)
$$ #显示脚本进程号(PID) 

举例:

①编写test.sh脚本

②赋予执行权限,执行test.sh脚本

③编写脚本

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

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

相关文章

C++回顾(八)—— 继承

8.1 继承的概念 继承是类与类之间的关系,是一个很简单很直观的概念,与现实世界中的继承类似,例如儿子继承父亲的财产。 继承(Inheritance)可以理解为一个类从另一个类获取成员变量和成员函数的过程。例如类 B 继承于类…

jconsole远程linux下的tomcat

修改Tomcat的配置 进去 Tomcat 安装目录下的 bin 目录,编辑 catalina.sh vi catalina.sh定位到 ----- Execute The Requested Command ----------------------------------------- vi 编辑模式下,点击 Esc,输入 / ,然后粘贴 -…

什么是Netty

一.Netty介绍 1.什么是netty Netty 是由 JBOSS 提供的一个 Java 开源框架。Netty 提供异步的、基于事件驱动的网络应用程序框架,用以快速开发高性能、高可靠性的网络 IO 程序,是目前最流行的 NIO 框架,Netty 在互联网领域、大数据分布式计算…

自动驾驶介绍系列 ———— 看门狗

文章目录硬件看门狗软件看门狗差异分析延申窗口看门狗硬件看门狗 硬件看门狗的本质上是一个定时器电路。通常存在一个输入,输入到MCU的RST端。在正常工作状态下,MCU每隔固定时间间隔会输出一个信号给RST端,实现对看门狗端清零。如果在指定的时…

RK3568驱动OV13850摄像头模组调试过程

摄像头介绍品牌:Omnivision型号:CMK-OV13850接口:MIPI像素:1320WOV13850彩色图像传感器是一款低电压、高性能1/3.06英寸1320万像素CMOS图像传感器,使用OmniBSI?技术提供了单-1320万像素(42243136)摄像头的…

C++20 协程体验

1 介绍协程是比线程更加轻量级并发编程方式,CPU资源在用户态进行切换,CPU切换信息在用户态保存。协程完成异步的调用流程,并对用户展示出同步的使用方式。协程的调度由应用层决定,所以不同的实现会有不同的调度方式,调度策略比较灵…

麻雀算法SSA优化LSTM长短期记忆网络实现分类算法

1、摘要 本文主要讲解:麻雀算法SSA优化LSTM长短期记忆网络实现分类算法 主要思路: 准备一份分类数据,数据介绍在第二章准备好麻雀算法SSA,要用随机数据跑起来用lstm把分类数据跑起来将lstm的超参数交给SSA去优化优化完的最优参数…

Python可变对象与不可变对象的浅拷贝与深拷贝

前言 本文主要介绍了python中容易面临的考试点和犯错点,即浅拷贝与深拷贝 首先,针对Python中的可变对象来说,例如列表,我们可以通过以下方式进行浅拷贝和深拷贝操作: import copya [1, 2, 3, 4, [a, b]]b a …

小众实用!5款不为人知的Windows软件,让你工作更轻松

分享5款冷门但值得下载的Windows软件,个个都是实用,你可能一个都没见过,但是 我觉得你用过之后可能就再也离不开了。 1.键盘可视化——Keyviz Keyviz是一款免费开源的小工具,它的作用是可以实时展示键盘的操作,就可以…

编程语言分类

目录 ❤ 机器语言 机器语言的编程 ❤ 汇编语言 ❤ 高级语言(编程语言) 编译型 解释型 ❤ 动态语言和静态语言 ❤ 强类型定义语言和弱类型定义语言 ❤ 主流语言介绍 C语言 C java python JavaScript SQL PHP python从小白到总裁完整教程目录:https://blog…

浅入浅出keepalived+mysql实现高可用双机热备

当数据库发生宕机的情况,如果配置了数据库主从同步模式或主主同步模式,则可以从从库中获取数据。 当数据库发生宕机的情况,要求应用系统实现高可用,应用系统不会受到影响,需要对mysql进行双机热备实现数据库的高可用。…

断点调试(debug)

目录 F8案例 ​编辑 debug过程中报错 ​编辑用debug查看方法源码 一层一层查看 Arrays.sort()方法 F9 DebugExercise 介绍:断点调试是指在程序的某一行设置一个断电,调试时,程序运行到这一行就会停住,然后可以一步步往下调试…

微服务引擎 MSE 企业版全新升级

作者:流士 随着企业应用大规模云上迁徙与应用微服务化步伐加快,微服务治理的重要性对企业不言而喻,但微服务治理本身的规范化与标准化尚未形成,导致很多企业在微服务治理方面正经历着痛苦的试错期,甚至难以满足线上环境…

工作日志day03

同时构建静态和动态库 //如果用这种方式,只会构建一个动态库,虽然静态库的后缀是.a ADD_LIBRARY(hello SHARED ${LIBHELLO_SRC}) ADD_LIBRARY(hello STATIC ${LIBHELLO_SRC}) //修改静态库的名字,这样是可以的,但是我们往往希望他…

RK3568平台开发系列讲解(显示篇)DRM的atomic接口

🚀返回专栏总目录 文章目录 一、Property二、Standard Properties三、代码案例沉淀、分享、成长,让自己和他人都能有所收获!😄 📢目前DRM主要推荐使用的是 Atomic(原子的) 接口。 一、Property Property(属性)—– Atomic操作必须依赖的基本元素 Property把前面的…

【教学典型案例】28.生产环境nginx限制上传大小

目录一:背景介绍二:Nginx限制上传大小1、Nginx官方文档说明2、设置参数1)、在server模块中设置2)、在http模块中设置三:问题分析过程四:总结一:背景介绍 二:Nginx限制上传大小 1、N…

X264简介-Android使用(二)

X264简介-Android使用(二) 4、Ubuntu上安装ffmpeg: 检查更新本地软件包(如果未更新,reboot Vmware): sudo apt update sudo apt upgrade官网下载的source文件安装: http://ffmpe…

基于JSP的网上书城

技术:Java、JSP等摘要:随着科技的迅速发展,计算机技术已应用到社会的各个领域。随着计算机技术和通信技术的迅速发展,网络的规模也逐渐增大,网络的元素也随之不断增加,有的利用其通信,有的利用其…

【C++】30h速成C++从入门到精通(IO流)

C语言的输入与输出C语言中我们用到的最频繁的输入输出方式就是scanf ()与printf()。 scanf(): 从标准输入设备(键盘)读取数据,并将值存放在变量中。printf(): 将指定的文字/字符串输出到标准输出设备(屏幕)。注意宽度输出和精度输出控制。C语言借助了相应的缓冲区来…

网络协议丨从物理层到MAC层

我们都知道TCP/IP协议其中一层,就是物理层。物理层其实很好理解,就是物理攻击的物理。我们使用电脑上网时的端口、网线这些都属于物理层,没有端口没有路由你没有办法上网。网线的头我们叫水晶头,也是物理层的一份子。如果你的面前…