加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

linux – 在bash中,我应该在函数中取消设置局部变量吗?

发布时间:2020-12-14 00:35:35 所属栏目:Linux 来源:网络整理
导读:我应该在bash脚本中的函数末尾取消设置我的局部变量吗? 例如,以下功能: square(){ local var=$1 (( var = var * var )) echo $var ## should I unset $var here??} 只是对最佳实践感到好奇,谢谢! 解决方法 如果您没有使用本地命令,那么您可能希望在离开函
我应该在bash脚本中的函数末尾取消设置我的局部变量吗?
例如,以下功能:

square()
{
  local var=$1
  (( var = var * var ))
  echo $var
  ## should I unset $var here??
}

只是对最佳实践感到好奇,谢谢!

解决方法

如果您没有使用本地命令,那么您可能希望在离开函数之前取消设置变量以避免污染全局命名空间.

square () {
    var=$1    # var is global,and could be used after square returns
    (( var = var * var ))
    echo $var
    unset var  # Remove it from the global namespace
}

这种方法的问题是square不知道它是否真的首先创建了var.它可能已被覆盖并最终取消设置在调用square之前使用的全局变量.

使用local,您可以保证创建一个仅在函数内可见的新变量.如果存在全局变量,则在函数持续时间内忽略该值.当函数退出时,将丢弃本地var,并且可以像以前一样使用全局var(如果有).

$var=3
$echo $var
3
$square 9
81
$echo $var
3

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读