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

在bash中,我应该取消设置函数中的局部variables吗?

我应该在bash脚本的函数末尾取消设置局部variables吗? 作为一个例子,下面的函数

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

只是好奇最好的做法,谢谢!

从bash输出中排除一个string

Bash虽然循环不结束

从grep输出删除字符

在Bash脚本中的正则expression式

设置内核的构build选项

如果不使用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=3 $ echo $var 3 $ square 9 81 $ echo $var 3

如果该评论## should I unset $var here?? 是你的子程序的结束,你不需要取消它的设置,因为无论如何它会超出范围。

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

相关推荐