码迷,mamicode.com
首页 > 系统相关 > 详细

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

时间:2019-02-02 00:17:48      阅读:223      评论:0      收藏:0      [点我收藏+]

标签:HERE   特殊   $1   字符   外部   通过   特性   本地   关系   

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这个用户】

      $#

      $@

      $*

  变量的赋值: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脚本编程入门

标签:HERE   特殊   $1   字符   外部   通过   特性   本地   关系   

原文地址:https://www.cnblogs.com/BurnovBlog/p/10347322.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!