`
dylan.wu
  • 浏览: 134071 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

shell函数的局部变量,全局变量。

 
阅读更多

在shell脚本中定义函数时,曾被局部变量,全局变量搞的头昏脑胀的。于是就写了两个脚本尝试了一下。首先看第一个例子

#!/bin/bash

function test() {
    echo "d_o_f:" $d_o_f
    d_i_f="defined in function"
    d_o_f="modified in function"
    echo "d_i_f:" $d_i_f
    echo "d_o_f:" $d_o_f
}

echo "---out fucntion---"
d_o_f="defined out function"
echo "d_o_f:" $d_o_f
echo "---in function---"
test
echo "---out function---"
echo "d_i_f:" $d_i_f
echo "d_o_f:" $d_o_f

 输出结果为:

---out fucntion---
d_o_f: defined out function
---in function---
d_o_f: defined out function
d_i_f: defined in function
d_o_f: modified in function
---out function---
d_i_f: defined in function
d_o_f: modified in function

 由上面的输出可以看出,

1、函数内是可以访问全局变量,并且对全局变量的修改会真正改变全局变量的值。

2、函数内定义的变量也是全局变量,也就是说函数外可以访问。

 

接着我们修改一下代码:

#!/bin/bash

function test() {
    local d_o_f
    local d_i_f
    echo "d_o_f:" $d_o_f
    d_i_f="defined in function"
    d_o_f="modified in function"
    echo "d_i_f:" $d_i_f
    echo "d_o_f:" $d_o_f
}

echo "---out fucntion---"
d_o_f="defined out function"
echo "d_o_f:" $d_o_f
echo "---in function---"
test
echo "---out function---"
echo "d_i_f:" $d_i_f
echo "d_o_f:" $d_o_f

 其输出结果为:

---out fucntion---
d_o_f: defined out function
---in function---
d_o_f:
d_i_f: defined in function
d_o_f: modified in function
---out function---
d_i_f:
d_o_f: defined out function
 

 

 从结果中可以看出关键词local起作用了。

1、对一个与全局变量同名的局部变量修改不会影响全局变量的值。

2、在函数外不能访问一个局部变量。

分享到:
评论

相关推荐

    Shell函数的7种用法介绍

    主要介绍了Shell函数的7种用法介绍,本文讲解了在shell文件内部定义函数并引用、返回值、函数输出、向函数传递参数、全局变量与局部变量等内容,需要的朋友可以参考下

    学习笔记---《shell从入门到精髓》张春晓

    1,shell 是大小写敏感的,空格敏感的! a!=A a=1(正确)a = 1(错误) 2,清屏命令 clear ?3,declare -x variable 设置环境变量 ...【except:函数的参数是局部变量】 局部变量的自定义: local va=1定义局部变量,

    shell浅谈之十函数.docx

    Linux Shell编程中也会使用到函数,函数可以把大的命令集合分解成若干较小的任务,也避免重复编写相同...函数又涉及到很多基本使用:函数参数调用、函数返回值、局部变量及全局变量、函数间的相互调用和函数递归调用。

    shell编程基础(一)

    shell编程 一、概述 shell是解释执行用户的命令,用户输入一条命令,shell进行解释执行,这种方式...全局变量—>环境变量 局部变量—>本地变量 VAR=10 控制语句:if、else、switch、case、for、while…… 函数 框架 2

    分享9个实战及面试常用Linux Shell脚本编写

    4)默认变量是全局的,在函数中变量local指定为局部变量,避免污染其他作用域。 5)有两个命令能帮助我调试脚本:set -e 遇到执行非0时退出脚本,set-x 打印执行过程。  6)写脚本一定先测试再到生产上。 1 获取...

    精通WindowsAPI 函数 接口 编程实例

    5.3.3 使用全局和局部函数分配和释放内存、改变内存块属性 137 5.4 虚拟内存管理 138 5.4.1 虚拟地址空间与内存分页 139 5.4.2 分配和释放可读可写的虚拟内存页面 139 5.4.3 修改内存页面状态和保护属性、...

    精通Windows.API-函数、接口、编程实例.pdf

    5.3.3 使用全局和局部函数分配和释放内存、改变内存块属性 137 5.4 虚拟内存管理 138 5.4.1 虚拟地址空间与内存分页 139 5.4.2 分配和释放可读可写的虚拟内存页面 139 5.4.3 修改内存页面状态和保护属性、...

    Linux C程序设计大全

    3.3.1 全局变量的初始值 3.3.2 局部变量的初始值 3.4 与函数有关的优化 3.4.1 函数调用与程序优化 3.4.2 变量存储优化 3.5 编写多文件程序——变量的存储类别 3.5.1 存储类别 3.5.2 static变量的作用——改变变量的...

    宋劲彬的嵌入式C语言一站式编程

    4. 全局变量、局部变量和作用域 4. 分支语句 1. if语句 2. if/else语句 3. 布尔代数 4. switch语句 5. 深入理解函数 1. return语句 2. 增量式开发 3. 递归 6. 循环语句 1. while语句 2. do/while语句 3. for语句 4. ...

    python cookbook(第3版)

    9.23 在局部变量域中执行代码 9.24 解析与分析Python源码 9.25 拆解Python字节码 第十章:模块与包 10.1 构建一个模块的层级包 10.2 控制模块被全部导入的内容 10.3 使用相对路径名导入包中子模块 10.4 将...

Global site tag (gtag.js) - Google Analytics