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

简介: 本文主要介绍了Shell编程自动化之Shell编程基础,并结合实例测试。

一、Shell可以用来做什么

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

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

3.应用程序管理;

4.日志分析处理程序;

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

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

7.自动化管理程序;

二、Shell概述

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

2023-04-13_Linux_Shell_01.png

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重定向是指将命令执行结果重新导出到其他设备或文件(以“>”或“>>”来表示),或是重新导入到其他设备或文件(以“<”或“<<”来表示)。常用的输入输出重定向命令格式与执行结果如下图所示:

2023-04-13_Linux_Shell_02.png

管道符实例:

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

#ls -al /etc | less

输出重定向实例:

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

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

2023-04-13_Linux_Shell_03.png

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

2023-04-13_Linux_Shell_04.png

2.Shell通配符

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

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

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

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

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

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

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

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

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

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

4.指定使用的Shell

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

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

#!/bin/bash

echo "hello world"

5.运行脚本

运行脚本有三种方法:

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

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

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

bash 脚本文件名及其参数

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

source 脚本文件名及其参数
或
. 脚本文件名及其参数

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

bash实例如下:

2023-04-13_Linux_Shell_05.png

2023-04-13_Linux_Shell_06.png


相关文章
|
15天前
|
监控 Shell Linux
探索Linux操作系统下的Shell编程之魅力
【8月更文挑战第4天】本文旨在通过一系列精心设计的示例和分析,揭示在Linux环境下进行Shell编程的独特之处及其强大功能。我们将从基础语法入手,逐步深入到脚本的编写与执行,最终通过实际代码案例展现Shell编程在日常系统管理和自动化任务中的应用价值。文章不仅适合初学者构建扎实的基础,同时也为有一定经验的开发者提供进阶技巧。
28 11
|
1月前
|
JavaScript 前端开发 Shell
Shell 脚本编程保姆级教程(上)
Shell 脚本编程保姆级教程(上)
|
19天前
|
运维 中间件 PHP
深入理解PHP中的中间件模式自动化运维之脚本编程实践##
【7月更文挑战第31天】在PHP开发中,中间件模式是一种强大的设计模式,它允许开发者在请求处理流程中注入自定义的处理逻辑。本文将通过实际代码示例来探讨如何在PHP项目中实现和使用中间件,以及这种模式如何提升应用程序的可维护性和扩展性。 【7月更文挑战第31天】 在现代IT运维管理中,自动化不再是可选项,而是提高生产效率、确保服务质量的必需品。本文将通过Python脚本编程的角度,探讨如何利用代码简化日常运维任务,提升工作效率。我们将从实际案例出发,逐步剖析自动化脚本的设计思路、实现过程及其带来的益处。 ##
15 0
|
1月前
|
Shell Linux
Linux Shell 脚本入门教程:开启你的自动化之旅
Shell是一种计算机程序,它充当了用户与操作系统之间的接口。在Linux系统中,Shell允许用户通过命令行界面(CLI)来控制计算机。Shell脚本则是一种使用Shell语言编写的脚本,它可以自动执行一系列的命令,帮助用户实现任务自动化,提高工作效率。
|
22天前
|
Shell Linux Perl
shell 编程中 awk ,wc ,$0,$1 等 命令的使用总结
shell 编程中 awk ,wc ,$0,$1 等 命令的使用总结
18 0
|
22天前
|
Shell Linux
Shell 脚本编程学习
Shell 脚本编程学习
20 0
|
2月前
|
Shell UED Python
Shell 循环语句:重复任务的自动化利器
在Shell脚本中,循环语句如`while`和`for`是自动化任务的关键。`while`循环在条件满足时执行,例如计算1到100的和;`for-in`循环遍历列表,可用于迭代指定数值或命令输出,如求1到100的和。`select-in`循环提供交互式菜单,增强脚本用户体验。理解并运用这些循环能提升脚本效率和可读性。现在,动手试试吧!
35 2
|
1月前
|
Shell
Shell 脚本编程保姆级教程(下)
Shell 脚本编程保姆级教程(下)
|
1月前
|
存储 Unix Shell
Shell编程基础与实用技巧
Shell编程基础与实用技巧
|
2月前
|
机器学习/深度学习 Unix Java
技术笔记:Linux之Shell脚本编程(一)
技术笔记:Linux之Shell脚本编程(一)
36 0