shell 全局和局部变量

/********************************************************************
 *                      shell 全局和局部变量
 * 声明:
 *     到目前为止,在写shell脚本的时候,经常被shell的函数中的变量
 * 作用域搞得糊涂,于是今天特意查了点资料,看到底怎么回事。
 *
 *                                 2016-2-24 深圳 南山平山村 曾剑锋
 *******************************************************************/

一、参考文章:
    shell 函数变量调用( 全局和局部 )混淆!!!
        http://bbs.chinaunix.net/thread-3607361-1-1.html

二、结论:
    shell变量都是全局的,除非在函数中用local限定(如果你的shell支持的话)

三、测试代码:
    #!/bin/bash

    data=10
    modify_data() {
        echo "2. $data"
        data=50
        echo "3. $data"

    }

    echo "1. $data"
    modify_data
    echo "4. $data"

四、测试结果:
    1. 10
    2. 10
    3. 50
    4. 50
时间: 2024-10-22 06:13:20

shell 全局和局部变量的相关文章

shell脚本中局部变量local

shell脚本中局部变量 在shell中定义函数可以使代码模块化,便于复用代码.不过脚本本身的变量和函数的变量的作用域问题可能令你费解,在这里梳理一下这个问题. (1)Shell脚本中定义的变量是global的,其作用域从被定义的地方开始,到shell结束或被显示删除的地方为止. 例1:脚本变量的作用域 #!/bin/bash #define the function ltx_func ltx_func() {    echo $v1    #modify the variable v1   

java之static变量与全局、局部变量的区别

static变量与全局.局部变量的区别 全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量.全局变量本身就是静态存储方式,静态全局变量当然也是静态存储方式.这两者在存储方式上并无不同.这两者的区别虽在于非静态全局变量的作用域是整个源程序,当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的.而静态全局变量则限制了其作用域,即只在定义该变量的源文件内有效,在同一源程序的其它源文件中不能使用它.由于静态全局变量的作用域局限于一个源文件内,只能为该源文件内的函

作用域,全局和局部变量

def test3(name,x=2,*args,**kwargs): #函数调用函数时,要在被调用的前面 print(name) print(x) print(args) print(kwargs) logger("TEST4") ## def logger(source): print("from %s" %source) test3("alex",age=18,sex="m",x=4) #局部变量 school=&quo

Linux编程 11(shell全局环境变量与局变环境变量)

一.概述 在linux中,很多程序和脚本都通过环境变量来获取系统信息,存储临时数据,配置信息.环境变量是指用来存储有关shell会话和工作环境信息,允许你在内存中存储数据,以便程序或shell中运行的脚本能够轻松访问到它们.也是存储持久数据的一种简便方法.在bash shell中,环境变量分为:全局和局部二类环境变量. 1.1全局环境变量 全局环境变量对于shell会话和所有生成的子shell都是可见的.局部变量则只是创建它们的shell可见.在linux系统中有系统环境变量,它们基本都是使用全

static与全局与局部变量的区别

转自:http://www.cnblogs.com/lzjsky/archive/2010/11/19/1882064.html 全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量.全局变量本身就是静态存储方式, 静态全局变量当然也是静态存储方式. 这两者在存储方式上并无不同.这两者的区别虽在于非静态全局变量的作用域是整个源程序, 当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的. 而静态全局变量则限制了其作用域, 即只在定义该变量的源文件内有效,

JS的预编译和执行顺序 详析(及全局与局部变量)

最近在复习javascript的事件处理时发现了一个问题,于是总结一下:javascript的预编译和执行顺序的问题:   <html> <head> <title>事件处理</title> <meta http-equiv="content-type" content="text/html;charset=utf-8"/> <script type='text/javascript'> //页

shell中的局部变量与全局变量

shell中的变量分局部变量和全局变量 bash的变量默认都是全局变量,脚本内都可以调用,无论在什么位置(函数体中也一样),即函数体外可以调用函数体内的变量 local一般用于局部变量声明,多在函数体内使用 如果要变为局部变量,则要使用local #!/bin/bashfunction test() {local aa="hello world"echo $a}testecho $a 输出结果为: hello world #!/bin/bashfunction test() {a=&q

全局、局部变量,数据的存储类别

[局部变量](local variable) 1.在一个函数中定义的,作用范围只在本函数范围内. 2.在一个复合语句中定义,作用范围只在复合语句中. [全局变量](global variable) #定义在函数之外,作用范围 从变量定义开始 到 源文件结束. [同名局部变量] #不同作用域的同名局部变量,互相不干扰,在内存中是处于不同的存储空间. [局部变量 与 全局变量 同名] #当局部变量与全局变量重名时,由于局部优先原则,全局变量被屏蔽. [全局变量的缺点] ————[高内聚,低耦合] 全

shell脚本中局部变量

在shell中定义函数可以使代码模块化,便于复用代码.不过脚本本身的变量和函数的变量的作用域问题可能令你费解,在这里梳理一下这个问题. (1)Shell脚本中定义的变量是global的,其作用域从被定义的地方开始,到shell结束或被显示删除的地方为止. 例1:脚本变量的作用域 #!/bin/bash #define the function ltx_func ltx_func() {    echo $v1    #modify the variable v1    v1=200 } #def