Shell编程自动化之Shell编程基础

一、Shell可以用来做什么

1.自动化批量系统初始化程序;

2.自动化批量软件部署程序;

3.应用程序管理;

4.日志分析处理程序;

5.自动化备份恢复程序;

6.自动化信息采集及监控程序;

7.自动化管理程序;

二、Shell概述

1.Shell是操作系统的外壳,是用户操作系统的命令接口,是一个介于用户和系统内核之间的桥梁。Shell接受用户以命令方式输入的命令(包括系统提供的内部命令、独立存在于某个目录下的程序),也能解释执行由Shell命令编写的Shell程序。Shell还是一个功能强大的编程语言,易编写、易调试、灵活性强。

2.Shell脚本就是将完成一个任务的所有的命令按照执行的先后程序,自上而下写入到一个文本文件中,然后给予执行权限。Shell语言编写的程序仅能在使用UNIX和Linux的计算机上使用。

3.Shell脚本中支持绝大多数编程语言中所能见到的程序控制结构,可以使用注释(“#”)对脚本的功能进行说明,可以使用条件测试表达式进行分支判断,可以使用循环语句处理大量数据,可以定义使用变量、数组等。Shell脚本也提供对函数的支持。Shell脚本是解释执行而不是编译执行。Shell编程的实质是连续自动执行一系列命令。

4.Shell是一个功能强大的计算环境,既可以将其作为命令解释器,也可以将其作为编程语言。Shell的功能主要包括以下几个方面。

接受来自键盘的命令;

  • 检查命令的正确性;
  • 命令错误则给出报错信息;
  • 命令正确则使用相应的系统调用执行命令(产生进程);
  • 命令执行完毕,给出命令执行的结果;

5.Shell脚本具有如下优点:

  • 一次性完成目标;
  • 不用重复键入一系列命令;
  • 简化用户的操作;

三、Shell基础知识

最常用的Shell包括Bourne Again Shell 、Bourne Shell、C Shell 、Korn Shell和Perl Shell等。下面均以流行的Bourne Again Shell 为例说明。Bourne Again Shell (简称Bash)是Linux默认的Shell,也是最流行的一种Shell,各个版本的UNIX和Linux几乎都支持Bash。UNIX、Linux都是区分大小写的,Shell脚本同样也是区分大小写的。

1.I/O重定向

在Linux系统中,数据流可分为3类:

  • 数据输入
  • 数据输出
  • 错误输出

标准输入通常是指传给一个命令的键盘输入。标准输出是一个命令的执行结果,通常标准输出被定向到显示器。可以利用管道把这些数据流之一输送给另外一条命令,也可以利用I/O重定向把这些数据流之一重定向到一个文件。管道和I/O重定向是Linux系统中特有的概念。所谓管道是指将某个命令的输出结果传送到另一个命令,当成另外一个命令的输入,其代表符号是“|”。所谓I/O重定向是指将命令执行结果重新导出到其他设备或文件(以“>”或“>>”来表示),或是重新导入到其他设备或文件(以“<”或“<<”来表示)。常用的输入输出重定向命令格式与执行结果如下图所示:

管道符实例:

利用管道将”ls -al”命令的输出结果输入到more 或less命令,可以实现分页显示,命令如下:

#ls -al /etc | less

输出重定向实例:

1).以覆盖方式把正确输入和错误输入都保存在同一个文件中
命令 &> 文件

2).以追加方式把正确输入和错误输入都保存在同一个文件中
命令 &>> 文件

3).以追加方式把正确输入保存在文件1中,把错误输入保存在文件2中
命令 >> 文件1 2>> 文件2

2.Shell通配符

Shell中支持使用通配符,常用的通配符如下所示:

?:表示任意的单个字符;

*:表示任意长度的任意字符串;

:表示匹配放在[ ]中的字符集中的任意一个字符;

{ }:将大括号中的字符串以及前导字符串和后继字符串作为匹配条件;

3.单引号、双引号及反引号

Shell中使用三种引号:双引号、单引号和反引号。其中,双引号对字符串中出现的“”、“”””、“`”和“\”进行替换;单引号不进行替换,将字符串作为普通字符串输出;反引号会将字符串作为命令执行,并返回执行的结果。其具体含义如下所示。

双引号(“ ”):在双引号中的字符,除了“”、“”””、“`”和“\”以外的所有字符都被解释成字符本身。

单引号(’ ‘):在单引号中的所有特殊字符(如“$”、“”””、“`”和“\”)都失去特殊意义,而成为普通字符。

反引号(` `):在反引号中的字符被解释成命令,例如,`cmd`会被解释成命令cmd执行的结果。

4.指定使用的Shell

Shell脚本文件的第一行通常会放置一行特殊的字符串,告诉操作系统使用哪个Shell来执行这个文件。

创建test.sh文件,输入下面内容:

5.运行脚本

运行脚本有三种方法:

(1)、通过chmod命令把文件的权限设置成可读、可执行,然后直接执行该可执行文件,格式如下:

chmod u+x 脚本文件名    或  chmod 755 脚本文件名
./脚本文件名及其参数

(2)、直接使用Shell的启动命令来执行脚本。

bash 脚本文件名及其参数

(3)、使用bash内部命令“source”或“.”运行Shell脚本。

source 脚本文件名及其参数

或者

. 脚本文件名及其参数

注:“.”和后面的程序名称之间要留有空格

bash实例如下:


如果本文对您有所帮助,请关注微信公众号 “ 捷创源科技 ” 。加入知识星球,可以获取更多技术干货!