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修改脚本退出值

在未指定退出值时

指定退出值时

相关推荐
Insist75312 分钟前
linux操作系统---小白玩转shell脚本
linux·运维·服务器
心在征途16 分钟前
无网络下,两台linux服务器实现时钟同步
运维·服务器
小沈熬夜秃头中୧⍤⃝23 分钟前
Flowise工作流引擎的本地部署与远程访问实践
服务器
Xの哲學1 小时前
hostapd状态机解析
linux·网络·算法·wireless
孞㐑¥1 小时前
Linux之线程同步与互斥
linux·c++·经验分享·笔记
yangshuo12811 小时前
解决node项目nginx静态缓存导致项目重建后页面无变化问题
linux·nginx·缓存
星辰生活说1 小时前
智净未来:华为智选IAM以科技巧思优化家庭健康饮水体验
服务器·科技·华为
独行soc2 小时前
2025年渗透测试面试题总结-2025年HW(护网面试) 01(题目+回答)
linux·科技·安全·面试·职场和发展·区块链
码里看花‌2 小时前
网络编程简介与Netty实战:从入门到高性能Echo服务器
运维·服务器·网络
独行soc3 小时前
2025年渗透测试面试题总结-2025年HW(护网面试) 02(题目+回答)
linux·科技·安全·面试·职场和发展·渗透测试·区块链