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

Linux学习笔记:shell脚本篇(1)

什么是shell脚本

Shell脚本是可以运行的文本,其内容是由逻辑和数据组成,是解释型语言。shell 是一种脚本语言

脚本:本质是一个文件,文件里面存放的是 特定格式的指令,系统可以使用脚本解析器 翻译或解析 指令 并执行(它不需要编译),用于实现系统底层的自动化批量重复的行为。
shell 既是应用程序 又是一种脚本语言(应用程序 解析 脚本语言)

基本结构

  • 脚本幻数,即脚本解释器,脚本运行的最优先指令,负责对脚本中其他命令进行解释
  • 程序主题,程序主体通常由命令,执行逻辑控制器和数据组成
  • 注释,脚本中的说明文字,不参与脚本执行,只是对脚本中的代码进行说明(单行:#注释内容 多行:" 注释内容":)
(1)脚本命名书写规范

脚本文件的命名应见名知意,例如 backup_mysql.sh,做到看脚本名字就能知道其具体作用和功能。

(2)其他书写规范和建议
  • 脚本中尽量不要用中文注释,防止本机或切换系统环境后中文乱码的困扰
  • 文件开头指定脚本解释器 #!/bin/sh 或 #!/bin/bash
  • 多使用内部命令,如:echo、eval、exec、export、read、shift、exit
  • 尽量用少的命令完成动作,做到简化和实用并存。
  • 开头加版本特权等信息
  • 脚本代码要有缩进体现,利于后期阅读理解

用脚本在开头加版本特权等信息

在编写一个脚本呢时我们需要书写一些主属性信息用来利与脚本阅读,如设置tab键的空格,或者自己的署名、时间、作者、版本、邮箱等个人署名信息,这些信息如果每次写脚本都一个个敲上去就太没效率了,所以我们可以创建一个脚本,来简化这些繁琐的步骤。

vim ~/.vimrc

  • set就是设置
  • ts=4 —— ts表示tab键,=4则代表4个空格,所以ts=4代表一个tab键的长度是4个空格的长度
  • sw=2 —— 代表自动缩进长度为2
  • ai —— 代表自动缩进,比如我们在一行代码上使用了缩进,那换行时就会在下一行自动缩进

func函数,

func后面要指定一个名字,这里是SHELLTITLE,名字必须大写!!这里就是你写了名叫SHELLTITLE的一个函数,用来执行自动添加脚本个人信息的活

call —— 代表调用

append —— 代表指定哪一行,比如append(0, " "),就代表指定从第0行开始,写什么东西,以此类推,后面就表示指定第几行写什么东西,这里写的东西就是脚本的个人信息了(Author作者、Version版本、Date时间、Mail邮箱等等)

strftime("%Y/%m/%d") —— strftime代表捕捉时间,后面的%Y/%m/%d分别代表年、月、日

endfunc —— 代表此函数结束

函数的调用:

  • map <F4> —— map代表快捷键,<F4>代表F4键,合在一起代表设置快捷键为F4键
  • ms:call SHELLTITLE()<cr>'s —— 代表调用函数SHELLTITLE

第一行的名词解释

        map <F4> —— map代表快捷键,<F4>代表F4键,合在一起代表设置快捷键为F4键
        ms:call SHELLTITLE()<cr>'s —— 代表调用函数SHELLTITLE
第二行的名词解释

        autocmd BufNewFile *.sh,*.script call SHELLTITLE() —— 代表自动执行,即在某个特定的情况下时,自动执行函数SHELLTITLE
        BufNewFile —— Buf代表状态,NewFile就是字面意思,代表新的文件,合在一起表示状态为新文件时
*.sh,*.script —— 表示以.sh或.script结尾的文件
call SHELLTITLE() —— 调用函数SHELLTITLE

以上两种方法二选一即可

脚本执行

没有执行权限的时候

1.可以用source来调用脚本文件
source test2.sh
2.点 + 空格
. test2.sh
3.sh执行
sh test2.sh

有权限后

1)./ 点斜杠执行
./test2.sh
2)绝对路径执行
/root/test2.sh
. 点空格执行 与 ./点斜杠执行方式有何区别?
  • . 点空格是不开新的环境,直接在当前领域运行
  • ./ 点斜杠会先去脚本文件的开头解释器查看用什么来调用,并且会先新开一个脚本开头解释器的环境,再去调用

脚本调试

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

使用 sh +x 查看脚本文件

sh -x test3.sh

带+号的表示动作,不带+号的表示动作的输出

脚本的退出值

退出值
  • 在UNIX或者Linux中,每个命令都会返回一个退出状态码
  • 退出状态码是一个整数,其有效范围为0~255
  • 通常情况下,成功的命令返回0,而不成功的命令返回非0值。非0值通常都被解释成一个错误码
  • 行为良好的UNIX命令,程序和工具都会返回0作为退出码来表示成功

查看和更改退出值
echo $?

在调用完命令后,使用这个命令来查看退出值

不是0的退出值就代表有错

更改退出值的方法:在脚本文件中用exit指定

vim test3.sh#!/bin/bash
date
exit 66

http://www.xdnf.cn/news/10559.html

相关文章:

  • 【基于阿里云搭建数据仓库(离线)】IDEA导出Jar包(包括第三方依赖)
  • Perl One-liner 数据处理——基础语法篇【匠心】
  • Go 语言 + Word 文档模板:WordZero 引擎如何让企业文档处理效率提升 300%?
  • 使命召唤16:现代战争 MOD整合包 豪华中文 免安 离线运行版
  • 做好 4个基本动作,拦住性能优化改坏原功能的bug
  • Hadoop学习笔记
  • 开源的JT1078转GB28181服务器
  • 一次借助ChatGPT抵御恶意攻击的经历,为个人服务器添加自动防御系统Fail2ban
  • Vue 项目创建教程 (开发前的准备工作保姆级辅助文档)
  • 系统调用与程序接口的关系
  • 业务到解决方案构想
  • JVM——从JIT到AOT:JVM编译器的云原生演进之路
  • Modern C++(二)预处理器及表达式
  • 6个月Python学习计划 Day 12 - 字符串处理 文件路径操作
  • 企业级应用狂潮:从Spotify到LinkedIn的Llama实战手册
  • MySQL:视图+用户管理+访问+连接池原理
  • 任务26:绘制1-12月各省份平均气温和预测可视化图形(折线
  • Python数学可视化——显函数、隐函数及复杂曲线的交互式绘图技术
  • Linux(10)——第二个小程序(自制shell)
  • 7.4-Creating data loaders for an instruction dataset
  • debian12.9或ubuntu,vagrant离线安装插件vagrant-libvirt,20250601
  • 第二章支线四 ·响应圣坛:媒体查询与移动适配
  • Efficient Combination of
  • FastAPI MCP 快速入门教程
  • c++第四章练习题
  • spining-lidar的电机和激光雷达体(lidar-imu)之间的标定
  • java servlet: context-path的作用
  • powershell7.5@.net环境@pwsh7.5在部分windows10系统下的运行问题
  • Java实现中文姓名转拼音生成用户信息并写入文件
  • Lighttpd CGI配置:404错误排查实录