当前位置: 首页 > news >正文

Ubuntu的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脚本中的基本元素

建立脚本

# mkdir script

# cd script/

# vim timinglee

# file timinglee 运行结果:

脚本的基本结构

        脚本幻数:即脚本解释器,脚本运行的最优先指令,负责对脚本中其他命令进行解释

        程序主题:程序主体通常由命令,执行逻辑控制器和数据组成

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

脚本中的注释方法

脚本中通常用 # 号注释单行内容

# vim lee.sh

# sh lee.sh   运行结果:

多行注释

# sh lee.sh   运行结果:

脚本的书写规范

书写规范注意事项

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

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

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

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

        尽量用少的命令完成动作

# cat /etc/passwd | grep root

# grep root /etc/passwd

运行结果相同:

开头加版本特权等信息

# Author:作者

# Date:创建日期

# Version:版本

# Mail:联系方式

# Info:对软件信息进行描述

# Function:功能

注意:利用缩进体现代码结构,更加利于后期阅读

vim用于书写脚本的设定

        在编写一个脚本呢时我们需要书写一些主属性信息用来利与脚本阅读

        如果每次都手写这些信息,很显然有做了很多重复动作

        用vim的自动编写功能可以实现对于这些重复动作的简化

脚本书写设置

# vim ~/.vimrc           【设置家目录脚本书写格式】

set ts=4 sw=4 ai et        

ts=4表示一个Tab键是4个空格,sw=4缩进长度为4ai表示自动缩进(这一行有Tab键,按回车键下一行会自动缩进,长度被Tab键固定),et表示把Tab键转换成空格 

脚本执行方法

在当前环境下运行

# vim test.sh

# . test.sh         【当前环境作解释器调用脚本】

# ps f  运行结果:

# source test.sh

# ps f  运行结果:

在指定环境中运行

# sh test.sh        【脚本没有可执行权限时使用的方法("sh" ,". " ,"source")】

# ps f  运行结果:

# chmod +x test.sh      【为脚本添加可执行权限】

# ./ test.sh

# /root/script/test.sh

# ps f  运行结果:

. test.sh./ test.sh区别:" . "点+空格不会开新环境,"./"在当前环境,不能在根目录运行。

脚本调试

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

# vim lee.sh

# sh lee.sh运行结果:

# sh -x lee.sh运行结果:

命令退出值

什么退出值

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

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

通常情况下,成功的命令返回0,而不成功的命令返回非0值。非0值通常都被解释成一个错误码行为良好的UNIX命令,程序和工具都会返回0作为退出码来表示成功。

查看退出值

# echo $?             【查看退出值,0表示没有错误】

没有目录查看退出值

有目录查看退出值

修改脚本退出值

# vim lee.sh

# sh lee.sh

# echo $?

练习:使用脚本查找指定网卡的IP地址

# sh test.sh ens160      【使用脚本查看网卡IP地址】

相关文章:

  • 按键状态机
  • 深度学习算法模型概念整理----模型量化、校准、模型蒸馏、算子、算子融合
  • 第17章 发布和部署应用程序
  • ArcGIS Pro 3.4 二次开发 - 几何
  • Powershell实现服务守护进程功能(服务意外终止则重启)
  • LSTM模型进行天气预测Pytorch版本
  • 【EdgeYOLO】《EdgeYOLO: An Edge-Real-Time Object Detector》
  • Kubernetes Service 类型与实例详解
  • 阿里云国际版注册邮箱格式详解
  • MyBatis 拦截器的应用场景及实践
  • 矩阵链乘法问题
  • Vue:axios(POST请求)
  • 基于线性回归的短期预测
  • 5月26日复盘-自注意力机制
  • 如何提高 Python 代码质量
  • 56页 @《人工智能生命体 新启点》中國龍 原创连载
  • 小巧高效的目录索引生成软件
  • 大模型的检索增强生成综述研究
  • 消费电子卷入“技术军备竞赛”
  • 华为OD机试真题——二叉树的广度优先遍历(2025A卷:200分)Java/python/JavaScript/C/C++/GO最佳实现
  • 网站建设与维护banner/网络营销活动推广方式
  • 如何进行电商网站设计开发/会计培训班初级费用
  • 网站建设与管理和电子商务哪个好/制作网站的步骤和过程
  • 门户网站是什么/网站外包公司有哪些
  • 企业形象策划/济南seo优化外包服务
  • 我想做个网站 详解怎么做/seo外贸推广