文章目录

  • 什么是 shell脚本
  • shell脚本优点
  • 第一个脚本的编写与执行
    • 编写第一个脚本
    • 执行脚本

什么是 shell脚本

shell 脚本就是利用 shell 的功能所写的一个程序( program ),这个程序使用纯文本文件,将一些 shell 的语法和命令( 含外部命令 )写在里边,搭配正则表达式,管道命令和数据流重定向等功能,以达到我们所想要的处理目的

简单地说,shell脚本 就像是早期 DOS 时代的批处理文件( .dat ),最简单的功能就是将许多命令集合写在一起,让用户很轻易地就能够用 one touch 的方法去处理复杂的操作( 执行一个shell脚本,就能够一次执行多个命令 ),而且 shell脚本更提供数组,循环,条件与逻辑判断等重要功能,让用户也可以直接用 shell 来编写程序,而不必使用类似 C 等传统程序语言来编写。

shell脚本优点

将人工通过手工操作的命令执行功能操作,转移到脚本中通过脚本程序完成自动化操作

  • 基础配置:系统初始化操作,系统更新,内核调整等
  • 安装程序:自动部署 LNMPLAMPMySql
  • 配置变更:Nginx配置MySql配置Redis配置
  • 业务部署:配合 gitjenkins 等实现自动化持续交付
  • 日常备份:脚本对项目或者软件实现全备份或增量备份等
  • 信息采集:硬件,系统,服务,网络等各种数据的自动采集
  • 日志分析:获取日志,排序,去重,统计,分析
  • 服务扩容:监控服务器信息,脚本程序自动化扩容部署

shell脚本可以完成自动化操作之后,重复性的周期性的工作比手工执行有如下的优势:

  • 减少重复工作,周期性工作
  • 减少故障几率,降低工作量

第一个脚本的编写与执行

如同前边所说的,shell脚本其实就是纯文本文件,我们可以编辑这个文件,然后让这个文件来帮我们一次性执行多个命令,或是利用一些运算与逻辑判断来帮我们完成某些功能。在shell的编写中还需注意下面的事项:

  • 命令是从上而下,从左而右地分析与执行
  • 命令,选项与参数间的多个空格都会被忽略掉
  • 空白行也会被忽略掉,并且 Tab 按键所产生的空白同样视为空格键
  • 如果读取到一个 Enter符号( CR ),就尝试开始执行该行命令
  • 如果一行的内容太多,可以使用 \Enter 来扩展至下一行
  • # 视为注释,任何加在 # 后边的数据会被忽略

编写第一个脚本

在武侠世界中,学武功都要从扫地和蹲马步做起,那么学程序呢,则是由 显示hello world 这段文字开始:

#!/bin/bash
# This program shows "hello world" in your screen
# ...
# ...echo "hello world"
exit 0

将整个程序分成数段,大致是这样:

1. 第一行 #!/bin/bash 旨在声明这个脚本使用的 shell 名称

由于我们使用的是 bash,因此必须要以 #!/bin/bash 来声明这个文件内使用 bash 的语法,当程序执行时,它能够加载 bash 的相关环境配置文件,并且使用 bash 来使我们下面的命令能够执行。如果没有设置好这一行,那么程序很可能无法执行,因为系统可能无法判断程序需要使用什么 shell 来执行

2. 程序内容的说明

整个脚本当中,除了第一行的 #! 是用来声明 shell 的之外,其它的 # 都是注释用途,一般来说,第二行用来整个程序的基本数据:1. 内容与功能,2. 版本信息,3. 作者联络方式,4. 建文件日期,5. 炉石记录等。这将有助于未来程序的改写与调试。

3. 主要程序部分

将主要的程序写好即可,在这个例子中,就是 echo 那一行

4. 执行结果告知( 定义返回值 )

一个命令的执行成功与否,可以使用 $? 这个变量来观察,那么我们也可以利用 exit 使程序中断并返回一个数值。我们执行完这个脚本后,若接着执行 echo $? 则可以得到 0 的值。利用这个 exit 的功能,我们还可以自定义错误信息,让程序变得更聪明!

执行脚本

假设你编写的文件为 hello.sh ,那么如何执行这个文件?可以使用以下办法:

  • 作为可执行程序 ./hello.sh 文件必须具备 可读 和 可执行 权限
  • 作为解释器参数 sh ./hello.sh 文件只需具备 可读 的权限即可

shell脚本 简介 及 第一个脚本程序相关推荐

  1. C++ Boost库:简介和第一个示例程序

    文章目录 1. 简介 2. Boost库开发环境搭建 3. 一个简单的示例程序 4. hpp文件简介 C++ Boost库:简介和第一个示例程序 C++ Boost库:数值转换 lexical_cas ...

  2. JSF学习笔记--JSF简介,JSF第一个应用程序

    1.JSF简介:  JavaServer Faces的提出,让不同技术的人员可以彼此合作又不互相干扰,JavaServer Faces 也允许自定义标签,Java Community Process( ...

  3. shell脚本编译规范(编写第一个脚本,脚本变量的作用,类型 ,了解read命令,let命令,环境变量和预定义变量)

    文章目录 shell脚本编译规范 shell脚本应用场景 shell编程规范 编写第一个脚本 执行脚本文件四种方法 echo输出友好提示信息 管道与重定向 管道操作符号"|" sh ...

  4. 面向dba的linux shell 脚本简介,面向dba的linuxshell脚本简介.doc

    面向dba的linuxshell脚本简介.doc 面向DBA的LinuxShell脚本简介7年前,Oracle发布了Linux上的第一个商业数据库.从那时起,Oracle.RedHat和Novell/ ...

  5. 面向dba的linux shell 脚本简介,面向 DBA 的 Linux Shell 脚本简介

    DBA:Linux 面向 DBA 的 Linux Shell 脚本简介 作者:CasimirSaternos 学习一些在 Linux 上安装.运行和维护 Oracle 数据库所需的基本 bash sh ...

  6. Linux Shell脚本入门教程系列之(十五) Shell函数简介

    本文是Linux Shell脚本系列教程的第(十五)篇,更多Linux Shell教程请看:Linux Shell脚本系列教程 上一篇之后,函数可以将一个复杂功能划分成若干模块,从而使程序结构更加清晰 ...

  7. linux脚本简介,Linux Shell脚本简介

    Shell 诞生于 Unix,是与 Unix/Linux 交互的工具,单独地学习 Shell 是没有意义的,请先参考Unix/Linux入门教程,了解 Unix/Lunix 基础. 近几年来,Shel ...

  8. (四) Shell脚本简介,变量的定义、引用、删除,常见状态和运算符,命令,软件的安装和维护(RPM),软件的安装和维护(yum)

    1,课程回顾 2,本章重点 shell 脚本 软件管理(rpm yum) 3,具体内容 3.1 Shell脚本简介 3.1.1 什么是shell脚本 1.当命令不在命令行中执行,而是从一个文件中执行时 ...

  9. bash特性以及shell脚本简介

    bash的特性之多命令执行的逻辑关系: 1.命令替换 COMMAND1 $(COMMAND2) 2.管道 COMMAND1 | COMMAND2 | COMMAND3 ... 3.顺序执行结构 COM ...

最新文章

  1. docker 启动命令_Jenkins视频课程在Docker环境下安装Jenkins,命令行如何启动Jenkins...
  2. Interesting Array
  3. windows 常用命令不完全总结
  4. HTTP:HTTP的server and client详细攻略
  5. mac svn .a文件的上传方法
  6. C#动态加载dll,dll目录指定
  7. 使用微服务失败的12个原因
  8. 1.10_merge_sort_归并排序
  9. [自己动手玩黑科技] 1、小黑科技——如何将普通的家电改造成可以与手机App联动的“智能硬件”...
  10. Unity 序列化的问题
  11. 入门到精通pl/sql编程(千里之行始于足下)之触发器
  12. 前端可视化开发--liveload
  13. scratch课程案例——时钟
  14. 记一次IDEA克隆项目代码启动问题
  15. 推荐一位字节大佬的刷题经验!
  16. 免费版软件文档文件格式转换
  17. 【遥感卫星】Landsat 卫星
  18. 从小市值因子策略入手,带你入门量化投资 (附年化收益率77.83%策略)
  19. endnote参考文献排版_如何用 EndNote 编辑适合投稿杂志的参考文献格式
  20. smart3D、acute3D、three3D等技术网页浏览3D模型注意事项

热门文章

  1. java 内存压缩_JVM之指针压缩内存如何设置
  2. matlab中欠定方程组超定方程组_【七年级】28二元一次方程组应用——列表与画图...
  3. noip2006 JAM计数法 (模拟)
  4. 大工21春《SQL数据库课程设计》模板及要求
  5. 全功能mp3,wav音频格式转换器-QVE音频剪辑
  6. 视觉机器学习之--决策树学习 方差意义 Cnm的意思
  7. 蚂蚁金服分布式中间件开源第三弹: 下一代微服务SOFAMesh
  8. 数列的组合及排列方式java_java数组排列组合
  9. boost------asio库的使用2(Boost程序库完全开发指南)读书笔记
  10. 抖音sign值生成失效分析(2020-03)