会不会有那么一天,生活可以简单到每天清早踏上一辆载着鲜花的脚踏车,微笑着穿过窄窄的街巷,为爱花的人送去芬芳,为需要知识的你送去帮助。
简介
随着Linux系统在企业中的应用越来越多,服务器的自动化管理也变得越来越重要。在Linux服务器的自动化维护工作中,除了计划任务的设置以外,Shell脚本的应用也是非常重要的一部分。
本章将主要学习Shell脚本基础,变量使用等知识,要求学会编写简单的脚本。
本章重点
Shell变量的应用
Shel脚本的编写和执行
理论讲解
一,Shell脚本基础
在一些复杂的Linux维护工作中,大量重复性的输入和交互操作不仅费时费力,而且容易出错。
而编写一个恰到好处的Shell脚本程序,可以批量处理,自动化地完成一系列维护任务,大大减轻管理员的负担。
1.编制第一个Shell脚本
Linux系统中的Shell脚本是一个特殊的应用程序,它介于操作系统内核与用户之间,充当了一个“命令解释器”的角色,负责接收用户输入的操作指令(命令)并进行解释,将需要执行的操作传递给内核执行,并输出执行结果。
常见的Shell 解释器程序有很多种,使用不同的Shell 脚本时,其内部指令、命令行提示等方面会存在一些区别.通过/etc/shells文件可以了解当前系统所支持的Shell脚本种类。
其中,/bin/bash是目前大多数Linux版本采用的默认Shell脚本.Bash的全称为Bourne Again Shell.是受欢迎的开源软件项目之一。本课程中讲述的所有Shell操作均以Bash为例。
那么,什么是“Shell脚本”呢?简单地说,只要将平时使用的各种Linux命令按顺序保存到一个文本文件中,然后添加可执行权限,这个文件就成为一个Shell脚本了。例如,执行以下操作可以创建第一个脚本文件:helloShell.sh。
当然,一个合格的Shell脚本程序应该遵循标准的脚本结构,而且能够输出友好的提示信息,更加容易读懂.对于代码较多,结构复杂的脚本,应添加必要的注释文字,标准化的helloShell.sh脚本内容如下所示。
helloShell.sh脚本内容
执行helloShell.sh脚本内容
上述helloShell.sh脚本文件中,包括三条命令:cd/etc/、pwd、Is。执行此脚本文件后。
输出结果与依次单独执行这三条命令是相同的,从而实现了“批量处理”的自动化过程。
上述helloShell.sh脚本文件中
第一行#!/bin/bash 是一行特殊的脚本声明,表示此行以后的语句通过/bin/bash程序来解释执行;
第二行#大多用来解释当前脚本的作用以及功能
第三行#写编写脚本工程师的联系方式,方便脚本故障后联系该工程师
echo命令用于输出字符串,以使脚本的输出信息更容易读懂.
1)执行脚本的方法
sh helloShell.sh: 不需要添加执行权限来执行脚本,可以直接执行脚本,相当于/bin/sh来解释脚本。
source helloShell.sh: 和/bin/sh一样,不需要添加执行权限,但是source和/bin/sh的区别是执行完指定脚本会进入该脚本的变量目录
./helloShell.sh:需要添加执行权限来解释脚本
Linux系统中包括大量的Shell脚本文件,在学习Shell脚本的过程中可用来作为参考,但应尽量避免直接修改系统内的Shell脚本文件,以免导致服务或系统故障。
二,重定向与管道操作
由于Shell 脚本“批量处理”的特殊性,其大部分操作过程以静默方式运行,不需要用户进行干预。因此学会提取、过滤执行信息变得十分重要。本小节主要介绍Shell环境中的两个I/O操作:重定向、管道。
1.重定向操作
Linux系统使用文件来描述各种硬件,设备等资源,如以前学过的硬盘和分区,光盘等设备文件。
用户通过操作系统处理信息的过程中,包括以下几类交互设备文件。
标准输入(STDN):默认的设备是键盘,文件编号为0,命令将从标准输入文件中读取在执行过程中需要的输入数据。用“
标准输出(STDOUT):默认的设备是显示器,文件编号为1.命令将执行后的输出结果发送到标准输出文件。用“>”表示。
标准错误(STDERR):默认的设备是显示器,文件编号为2,命令将执行期间的各种错误信息发送到标准错误文件。用“2>”表示。
标准输入、标准输出和标准错误默认使用键盘和显示器作为关联的设备,与操作系统进行交互,完成最基本的输入、输出操作,即从键盘接收用户输入的各种命令字串、辅助控制信息,并将命令结果输出到屏幕上;如果命令执行出错,也会将错误信息反馈到屏幕上。
在实际的Linux系统维护中,可以改变输入、输出内容的方向,而不使用默认的标准输入、输出设备(键盘和显示器),这种操作称为重定向。