我应该在 bash 脚本中的函数末尾取消设置局部变量吗? 例如,以下函数:
square()
{
local var=$1
(( var = var * var ))
echo $var
## should I unset $var here??
}
只是对最佳实践感到好奇,谢谢!
最佳答案
如果您没有使用 local
命令,那么您可能希望在离开函数之前取消设置变量以避免污染全局命名空间。
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
(如果有的话)可以像以前一样使用。
$ var=3
$ echo $var
3
$ square 9
81
$ echo $var
3
关于linux - 在 bash 中,我应该取消设置函数内的局部变量吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35217413/