微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

我应该在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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐