linux脚本编程教程,shell脚本编程基础教程

在Linux中,当你想要做什么事情的时候,可以通过输入命令传递给计算机,但也会有很多时候,我们需要计算机/服务器完成相同的任务,如果我们再一次一次输入命令执行的话,就会非常的不方便,要想让所有的事情变得简单并且自动化,我们就可以借助shell脚本来实现,也就是说脚本语言是我们与计算机交流的一种便捷途径。

##脚本基础

1)内容:包含一些命令或声明,并符合一定格式的文本文件。

2)格式要求:首行shebang机制

#!/bin/bash

#!/usr/bin/Python

#!/usr/bin/per1

3)脚本的用途:

*自动化常用的命令

*执行系统管理和故障排除

*创建简单的应用程序

*处理文本或文件

4)创建脚本过程

*使用文本编辑器来创建文本文件

-可以添加注释,注释以#开头

*运行脚本

-给予执行权限,在命令上指定脚本的绝对或相对路径

-直接运行解释器,将脚本作为解释器程序的参数运行

##语句控制 (脚本过程编辑语言有三种过程)

1)顺序执行

*不需要特定的控制,只需要按照语句依次执行即可

2)选择执行

*需要特定的控制语句(如 if,case等)来判断执行

-选择执行还可以包括单分子、双分支、多分支结构,示例如下

1、

1fe6955be6eda026bd771c60107a796d.png

2、

b308153a7f0015f715d3abd2ac1362d8.png

脚本自上而下逐条件的判断,第一次判断到“假”条件时,执行分支判断,直至结束。

3)循环执行

* 将某代码段重复运行多次,重复循环的次数可以事先已知,也可以事先未知,设定进入和退出循环的条件。(包括for,while,until)

-for 循环

1、格式:

for 变量名 in 列表;do

循环体

done

2、执行机制:

依次将列表中的元素赋值给“变量名”,每次赋值后执行一次循环,直到列表中的元素耗尽,循环结束。

3、列表生成方式:

(1)直接给出列表(2)整数列表(3)返回列表的命令(4)使用glob,如:*.sh(5)变量引用

4、特殊格式:

for ((控制变量初始化;条件判断表达式;控制变量的修正表达式))

do

循环体

done

5、示例:

2a7989173024c9cb417f66505a1e749e.png

特殊格式示例

8fc1ec03f7307ba6320d1f62cdc76401.png

-while 循环

1、格式

while CONDITION;do

循环体

done

2、CONDITION:循环控制条件;进行循环之前,先做一次判断,每一次循环之后再次做判断,条件为“True”,则执行一次循环,直到条件测试状态为“false”时结束循环。

3、示例:

161c351b7c1630047399c9411fe09c13.png

-until 循环

1、格式:

until CONDITION;do

循环体

done

2、CONDITION:循环控制条件;进行循环之前,先做一次判断,每一次循环之后再次做判断,为“false”,则执行一次循环,直到条件测试状态为“true”时结束循环。

3、示例:

a945443a41d0aae410fccb4aff0e7192.png

-select 循环

1、格式

select variable in list

do

循环体

done

2、select 循环主要是用于创建菜单,按数字顺序排列的菜单项将显示标准错误上,并显示PS3提示符,等待用户输入。用户输入菜单列表中的莫个数字,执行相应的命令(用户输入被保存在内置变量REPLY中)

3、select 是个无限循环,因此要记住用break 命令退出循环,或者用exit命令结束循环,select 经常与 case 联合使用。

4、示例:

3e0c43c1cfeec9d2c62d5e4e17f51eb6.png

*控制语句:

-continue [N]:提前结束第N层的本轮循环,而直接进入下一轮的判断,最内层为第一层。

-break [N]:提前结束第N层循环,最内层为第一层。

-shift [N]:用于将参数列表list左移指定次数,缺省为左移一次。

##函数

函数function 是由若干条shell命令组成的语句块,实现代码重用和模块化编辑,它不是一个单独的进程,不能独立运行,而是shell程序的一部分。

1)语法 (有两部分组成,函数名和函数体),三种语法

*function f_name {

...函数体...

}

*function f_name () {

...函数体...

}

*f_name () {

...函数体...

}

2)函数的执行结果返回值:

*使用echo等命令进行输出

*函数体中调用命令的输出结果

3)函数的退出状态码:

*默认取决于函数执行的最后一条命令的退出状态码

*自定义退出状态码,格式为:

-return 从函数中返回,用最后状态命令决定返回值

-return 0 无错误返回。

-returu 1-255 有错误返回

4)使用函数方法:

函数在使用前必须定义,因此应将函数定义放在脚本开始部分,直至shell首次发现它后才能使用,调用函数仅使用函数名即可。

5)示例

e0156f37121987d3c1261ee3c29b5b71.png

0b1331709591d260c1c78e86d0c51c18.png