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

##脚本基础

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

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

    #!/bin/bash

    #!/usr/bin/python

    #!/usr/bin/per1

3)脚本的用途:

    *自动化常用的命令

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

    *创建简单的应用程序

    *处理文本或文件

4)创建脚本过程

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

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

    *运行脚本

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

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

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

1)顺序执行

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

2)选择执行

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

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

1、

shell脚本编程基础_第1张图片

2、

shell脚本编程基础_第2张图片

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

3)循环执行 

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

      -for 循环     

1、格式:

for 变量名 in 列表;do

    循环体

done

2、执行机制:

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

3、列表生成方式:

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

4、特殊格式:

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

do

    循环体

done

5、示例:

shell脚本编程基础_第3张图片

特殊格式示例

shell脚本编程基础_第4张图片

      -while 循环

1、格式

while CONDITION;do

    循环体

done

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

3、示例:

shell脚本编程基础_第5张图片

      -until 循环

1、格式:

until CONDITION;do

    循环体

done

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

3、示例:

shell脚本编程基础_第6张图片

      -select 循环

1、格式

select variable in list

    do

        循环体

done

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

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

4、示例:

shell脚本编程基础_第7张图片

    *控制语句:

      -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)示例

shell脚本编程基础_第8张图片