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


相关文章
|
3月前
|
Unix Shell Linux
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行
本文提供了几个Linux shell脚本编程问题的解决方案,包括转置文件内容、统计词频、验证有效电话号码和提取文件的第十行,每个问题都给出了至少一种实现方法。
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行
|
3月前
|
Shell Linux
Linux shell编程学习笔记30:打造彩色的选项菜单
Linux shell编程学习笔记30:打造彩色的选项菜单
|
1月前
|
人工智能 自然语言处理 IDE
通义灵码让AI帮你实现自动化编程
通义灵码是由阿里云与通义实验室联合开发的智能编码辅助工具,具备行级/函数级实时续写、自然语言生成代码、单元测试生成、代码优化、注释生成、代码解释、研发智能问答及异常报错排查等功能。该工具支持200多种编程语言,兼容主流IDE,如Visual Studio Code、Visual Studio和JetBrains IDEs。通义灵码在Gartner发布的AI代码助手魔力象限中表现出色,成为唯一进入挑战者象限的中国科技公司。目前,通义灵码下载量已超过470万,每日辅助生成代码超3000万次,被开发者广泛采用。
|
1月前
|
运维 监控 Shell
深入理解Linux系统下的Shell脚本编程
【10月更文挑战第24天】本文将深入浅出地介绍Linux系统中Shell脚本的基础知识和实用技巧,帮助读者从零开始学习编写Shell脚本。通过本文的学习,你将能够掌握Shell脚本的基本语法、变量使用、流程控制以及函数定义等核心概念,并学会如何将这些知识应用于实际问题解决中。文章还将展示几个实用的Shell脚本例子,以加深对知识点的理解和应用。无论你是运维人员还是软件开发者,这篇文章都将为你提供强大的Linux自动化工具。
|
2月前
|
Shell
Shell编程(下)
Shell编程(下)
110 1
|
2月前
|
Shell Linux Windows
Shell编程(上)
Shell编程(上)
47 1
|
2月前
|
Shell Linux 开发工具
|
2月前
|
监控 Unix Shell
shell脚本编程学习
【10月更文挑战第1天】shell脚本编程
82 12
|
2月前
|
存储 运维 监控
自动化运维:使用Shell脚本简化日常任务
【9月更文挑战第35天】在IT运维的日常工作中,重复性的任务往往消耗大量的时间。本文将介绍如何通过编写简单的Shell脚本来自动化这些日常任务,从而提升效率。我们将一起探索Shell脚本的基础语法,并通过实际案例展示如何应用这些知识来创建有用的自动化工具。无论你是新手还是有一定经验的运维人员,这篇文章都会为你提供新的视角和技巧,让你的工作更加轻松。
72 2
|
3月前
|
Shell Linux
Linux shell编程学习笔记82:w命令——一览无余
Linux shell编程学习笔记82:w命令——一览无余