zoukankan      html  css  js  c++  java
  • 【Shell】--- shell脚本中变量的类型及作用域

      一直对shell脚本有一种特殊的感觉,因此花了一段时间学习,本人擅长C语言编程,深受C语言荼毒,在学习其他任何类似于编程语言的东东的时候,都会不自觉的与C进行对比,因此对于shell中的变量的作用域一直有点疑问,在此总结一下:

      首先,脚本的变量声明相比于C来说还是比较简单好用的,跟python有的一拼,没有那么复杂的用法,直接说明然后使用,无论是字符串还是数字都一样。但是本着严谨的态度,对于变量的声明和使用,还是希望有需要的时候声明使用,不需要的时候,立马舍弃丢掉,一刻不多留,这就需要了解shell中变量的作用域问题。

      1、全局变量

      在shell中,默认的变量作用域是全局类型的。

     1 #!/bin/bash
     2 
     3 declare -i tmp1=10
     4 
     5 function fun1(){
     6     echo $tmp1;
     7     tmp2=100;
     8 }
     9 
    10 ###  START HERE  ###
    11 fun1
    12 
    13 echo $tmp2

      直接上代码,tmp1这种在函数体外文件内声明的变量,毫无疑问属于全局变量,其作用域应从定义的地方开始一直到脚本结束。而tmp2在这里也属于gloabl变量,其作用域应在第一次调用fun1()函数的地方开始,到脚本结束。

      可得:在没有任何限定说明的情况下,shell默认变量属于全局类型

      2、局部变量

      以上述代码为例,假设第7行tmp2=100,修改为declare -i tmp2=100,最终运行结果将不会输出tmp2=100,说明函数体内采用declare修饰的变量属于局部变量,作用域仅限于该函数体内部。

      local:显式声明某变量为局部变量,函数体内凡是带有locall修饰的变量,均为局部。(注意:如果局部变量与全局变量同名,则局部会覆盖全局变量)

      3、参数

      函数参数为局部类型,只能在当前函数内部使用。

  • 相关阅读:
    CentOS挂载ntfs
    搬水果
    CentOS安装完显卡启动进不去系统
    二叉树遍历
    拓展的异常类
    Visual Studio 2008 IDE 出现 “帮助更新正在进行”错误的解决办法
    JSON工具SuperObject编译时"整数溢出"异常的解决办法
    引用命名区域
    ruby操作excel的几段代码
    Delphi2009&2007中,测试工程的初级使用(DUnit)
  • 原文地址:https://www.cnblogs.com/szhb-5251/p/7904642.html
Copyright © 2011-2022 走看看