一、 Shell脚本

利用shell的功能所写的一个纯文本程序,扩展名为sh(sh代表shell),扩展名并不影响脚本执行

将一些shell的指令写在里面,然后应用正则表达式、管道命令、数据流重定向、数组、循环与条件判断以及逻辑判断等重要功能,从而达到我们所想要的处理目的。

常见脚本有:shell脚本、Java脚本、PHP脚本、Python脚本等。

Shell脚本的用途?

自动安装、自动管理

clip_image002

怎么执行脚本文件?

1. 先创建一个脚本文件 script.sh  , 后缀名是 .sh(.sh主要是为了方便识别这是个shell脚本文件)

clip_image003

2. 在文件中编写你的Shell脚本,保存并退出

clip_image004

3. 为脚本添加可执行权限

clip_image005

4. 执行

<1> ./script.sh     回车

<2>sh   script.sh    回车

<3>指定脚本文件的绝对路径,即可执行

clip_image006

这两中执行方式有什么区别呢?

第一种方式,它默认使用/bin/sh所指向的shell解释器来执行脚本文件,前提是脚本文件中未指定解释器。但如果在脚本文件中指定了使用哪种脚本解释器,那么它就不管/bin/sh指向哪个脚本解释器,而是使用脚本文件中所制定的那个脚本解释器。在脚本文件中指定脚本解释器: #!/bin/bash

第二种方式,使用/bin/sh所指向的shell解释器来执行脚本文件

第三种方式,选择使用的脚本解释器和第一种相同。

二、 变量

变量是用来存储非固定值的载体,它有一个值,以及零个或多个属性。

1. 自定义变量

非交互式定义变量:

clip_image008

使用<$变量名称>来调用变量的值

交互式定义变量:

clip_image009

2. 位置变量

使得在脚本中的命令可以调用运行脚本时不同位置的参数。

· $0 当前shell程序的文件名

· $1 运行shell的第一个参数

· $# shell程序所有参数的个数

· $* 所有参数的内容,将参数作为一个整体

· $@ 所有参数的内容,将参数分别作为个体看待

· $$ 当前进程的ID

· $? 程序退出的代码

clip_image010clip_image011

3. 环境变量

Linux是一个多用户的操作系统,每个用户登录系统时都会有一个专用的运行环境,通常情况下每个用户的默认的环境都是相同的。这个默认环境就是一组环境变量的定义。每个用户都可以通过修改环境变量的方式对自己的运行环境进行配置。

clip_image012

clip_image013

4. 展开替换

• 变量的展开替换

• 对变量的值做修改后输出

例:取绝对路径的文件名(目录名)

○ ${variable#key} 从头开始删除关键词key,最短匹配

○ ${variable##key} 从头开始删除关键词key,最长匹配

○ ${variable%key} 从尾开始删除关键词key,最短匹配

○ ${variable%%key} 从尾开始删除关键词key,最长匹配

○ ${variable/old/new} 用new来替换old,仅替换第一个

○ ${variable//old/new }用new来替换old,替换所有old

Ø ${#var}返回变量var的长度

Ø ${var:3}提取位置3到最后的字符

Ø ${var:3:5}从位置3开始提取5个字符

三、 Shell引号的规则

单引号

可将它中间的所有任意字符还原为字面意义

双引号

可将它中间的所有任意字符还原为字面意义,但不会屏蔽`,\,$

反引号

使用反引号进行命令替换,可以将命令字符替换为命令执行结果,同样可以使用$()来实现