08 bash特性--shell脚本编程入门

Posted Burnov

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了08 bash特性--shell脚本编程入门相关的知识,希望对你有一定的参考价值。

shell脚本编程入门

  编程语言介绍

变量

  变量:就是给计算机内存中的一段空间命令,命令的这个空间就叫做变量,而再给这个空间放入值的过程,我们就叫做给变量赋值;

  bash下的变量的内部数据类型:(这是数据在内存中存放的格式,默认情况下,shell程序下一班都不会去申明数据类型,所以,我们的bash程序默认数据为字符类型)

    字符型(string)

    数值:整型(int)、浮点型

    布尔类型:真假

  同时,脚本一般在执行的时候都会自动启动一个子shell进程,命令行中的启动的脚本会继承当前shell环境变量(也就是我们自己通过 bash ./xx.sh 命令执行的脚本程序),为了能够让程序运用源shell下的Linux命令,我们就需要运行 #!/bin/bash 来让系统识别这个脚本程序中用到的Linux命令,以及调用相应的环境变量来执行程序;

  bash下的支持变量类型:

    环境变量

      作用域为当前shell进程以及其子进程(脚本会自己再运行一个子进程)

      export VARNAME=VALUE  #export导出,也就是环境变量的定义方式;

      或者先定义变量再导出也可以

        VARNAME=VALUE

        export VARNAME

      我们可以通过命令:printenv、env、export 来查看当前的环境变量,如果想要在启动时候就需要导入环境变量,可以考虑将命令保存在profile或则bashrc文件中去;

    本地变量(局部变量)

      只对当前的bash程序有效,所以我们再shell脚本程序中定义的变量,基本上都是本地变量;例如:NAME=Jerry  #在bash下直接定义一个变量,在这个bash进程下生效;

      局部变量则是在这个bash进程下的一段代码中生效;例如:local VARNAME=VALUE  #定义局部变量,只对当前的代码(作用域)生效;

    位置变量

      $1、$2、$3 ... 以此类推

      这个变量主要和传参有关,它用来调用外部输入的参数,替换到shell脚本程序中去;

    特殊变量

      $?  用来判断上一条名的运行结果(0:表示上一条命令运行正确,非0:则表示错误,不同的数值代表不同的错误,其中1、2、127三个值是保留值,其他的错误值都可以自己定义)

      【有时候我们并不需要一条命令的输出内容,而是只需要判断命令是否正常运行,这时候我们结合 /dev/null 以及输出重定向和 $? 来做即可;例如:id student &> /dev/null | echo $?  #判断是否存在student这个用户】

      $#

      [email protected]

      $*

  变量的赋值:VAR_NAME=VALUE  (这里我们需要知道的是变量的命名,必须具有可读性,这里没有硬性要求,完全是编程规范)

  变量的调用:我们通过 ${VARNAME} 的方式来调用变量,如果其中VARNAME是一个独立的字符串,则 {} 一般都会被省略掉;但是有时候又不能省略,例如:

    ANIMAL=pig

    echo "There are some ${ANIMAL}s."  #这里的 {} 就不能省略,如果省略了,$ANIMALs 这个变量系统就无法识别了;

  撤销变量:所有的变量定义的时候,我们都省略了set命令,现在我们要撤销变量赋值关系,或则删除变量,就需要通过unset来执行;例如:unset VARNAME 即可;

  

shell脚本中的条件判断

  逻辑运算

  if语句:

    单分支if语句

    双分支if语句

    多分支if语句

shell脚本中的算数运算

shell脚本中的文件测试

shell脚本的错误排查

 

以上是关于08 bash特性--shell脚本编程入门的主要内容,如果未能解决你的问题,请参考以下文章

shell 编程入门,一些简单符合命令

shell编程bash特性

shell脚本-编程前奏-bash特性

shell脚本-编程前奏-bash特性

Linux Bash Shell编程快速入门

shell编程-bash教程入门