Linux的SHELL脚本基础

一、什么是shell脚本

shell脚本是文本的一种

shell脚本是可以运行的文本

shell脚本的内容是由逻辑和数据组成

shell脚本是解释型语言

二、shell脚本存在的意义

Shell脚本语言是实现Linux/UNIX系统管理及自动化运维所必备的重要工具

Linux/UNIX系统的底层及基础应用软件的核心大都涉及Shell脚本的内容。

每一个合格 的Linux运维工程师,都需要能够熟练地编写Shell脚本语言,并能够阅读系统及各类软 件附带的Shell脚本内容。

一次编编写永久受益

注:系统支持的shell类型可以查看/etc/shells,常见shell种类有:

Bourne Shell(/usr/bin/sh或/bin/sh):标识为sh,该Shell由Steve Bourne在贝尔实验室时编 写。在许多Unix系统中,该Shell是root用户的默认的Shell。

Bourne Again Shell(/bin/bash):标识为bash,该Shell由Brian Fox在1987年编写,是绝大多 数发行版的默认的Shell,当运行sh时其实调用的是bash。

C Shell(/usr/bin/csh):标识为csh,该Shell由Bill Joy在BSD系统上开发。由于其语法类似于C语 言,因此称为C Shell。

K Shell(/usr/bin/ksh):标识为ksh,该Shell由贝尔实验室的David Korn在二十世纪八十年代早 期编写。它完全向上兼容 Bourne Shell 并包含了C Shell 的很多特性。

三、shell脚本中的基本元素

1.脚本的基本结构

脚本幻数,即脚本解释器,脚本运行的最优先指令,负责对脚本中其他命令进行解释 程序主题,程序主体通常由命令,执行逻辑控制器和数据组成

注释,脚本中的说明文字,不参与脚本执行,只是对脚本中的代码进行说明

1.1脚本幻数为常量,基本不变,例如#!

一个文件中的程序是运行在该脚本幻数中的

1.2注释为#号

2.脚本中的注释方法

2.1单行内容的注释(标红框的为注释)

2.2多行内容的注释,用:" ",双引号中间的内容即为注释

注: :和"中间必须输入空格

命令书写错误时,此时执行命令会显示报错内容,而此时报错了的命令系统已经尝试执行了

四、脚本的书写规范

1.书写规范注意事项

1.1脚本文件名应见名知意,例如backup_mysql.sh

1.2文件开头指定脚本解释器 #!/bin/sh 或 #!/bin/bash

1.3脚本中尽量不要用中文注释,防止本机或切换系统环境后中文乱码的困扰

1.4多使用内部命令,如:echo、eval、exec、export、read、shift、exit

1.5尽量用少的命令完成动作

例如下可知,尽量少的命令可以是user时间和sys时间减少

1.6开头加版本特权等信息,这些信息如下:

Date:创建日期

Author:作者

Mail:联系方式

Function:功能

Version:版本

1.7利用缩进体现代码结构,更加利于后期阅读,详情如下:

2.vim用于书写脚本的设定

在编写一个脚本时我们需要书写一些主属性信息用来利与脚本阅读,如果每次都手写这些信息,很显然有做了很多重复动作,用vim的自动编写功能可以实现对于这些重复动作的简化

首先进入编辑

然后输入内容

set et可以使你在vim编写中按空格键可以一格一格的跳,ts为你每一跳的长度

ai可以使你在vim编写中按enter键后会缩进,sw可以设定你的缩进长度

func为函数,其后面要跟大写,endfunc结束

call为调用,append后加数字为指定在第几行

map和auto任写其一

buf表示一个状态,后加的是一个该状态的类型,call后的调用与func后的一致

五、脚本执行方法

1.在当前环境下运行

我们设置一个测试脚本内容

1.1用.加空格

1.2用source

注:这两种执行方式都不需要脚本本身有执行权限

2.在指定环境中运行

2.1用sh

2.2用chmod +x lee.sh(这个命令为添加可使用权限),这个命令执行后你就可以用根目录的方式去调用,如/script/test.sh

六、脚本调试

脚本在执行过程中如果出现问题,单从脚本的执行报错中找问题困难比较大,如果在执行时显示执行过程这样就可以快速定位脚本的问题所在

1.接下来说明然后显示执行过程

例(其中cat命令应为cal显示系统日历,用这个错误命令为例)

直接执行脚本的效果

显示命令执行过程的效果

注:在显示执行过程时,+行表示命令,不带+的行表示命令的输出

所以,显示命令执行过程后我们可以清晰的看到脚本错误的地方,错误的脚本不会执行

七、命令退出值

1.什么是退出值

在UNIX或者Linux中,每个命令都会返回一个退出状态码

退出状态码是一个整数,其有效范围为0~255

通常情况下,成功的命令返回0,而不成功的命令返回非0值。非0值通常都被解释成一个错误码

行为良好的UNIX命令,程序和工具都会返回0作为退出码来表示成功。

2.查看和更改退出值

2.1查看退出值

2.2修改脚本退出值

在未指定退出值时

指定退出值时

相关推荐
努力学习的小廉40 分钟前
深入了解linux系统—— 库的链接和加载
linux·运维·服务器
Albert_Lsk1 小时前
技术文档写作大纲
java·linux·服务器·技术文档
MoFe11 小时前
【.net core】SkiaSharp 如何在Linux上实现
linux·服务器·.netcore
Dxy12393102161 小时前
DrissionPage ChromiumPage模式:浏览器自动化的高效利器
运维·python·自动化·drissionpage
光路科技1 小时前
工业控制系统的神经网络:TSN交换机是如何改变自动化通信的?
运维·自动化
风暴智能1 小时前
在ROS2(humble)+Gazebo+rqt下,实时显示仿真无人机的相机图像
linux·无人机
小诸葛的博客2 小时前
Flannel 支持的后端
linux
qq2439201612 小时前
搭建frp内网穿透
服务器·网络·运维开发
linux-hzh2 小时前
Shell 脚本
linux·shell
漫步云端-r2 小时前
Python自动化之selenium语句——浏览器设置显示尺寸、截图、刷新网页
运维·selenium·自动化