在编写 sh 脚本时,在脚本末尾取消设置所有先前定义的全局变量是否被认为是好的做法?
例如,如果我执行我的脚本myscript
使用 。 (来源)内置,像这样
. myscript
执行脚本后,shell 会被脚本中定义的变量污染。这看起来真的很糟糕(特别是如果被其他人使用的话)。
如果可以的话,我会完全摆脱 sh (或 bash)中的全局变量,但更多时候它们并不是最糟糕的解决方案:-)。
这并不是真正执行脚本。它正在获取它,这使得 shell 执行脚本内的每个命令。如果你想执行该脚本,你可以这样做:
./myscript
在这种情况下,脚本内设置的任何环境变量都不会影响您的 shell。
如果您确实需要获取脚本的源代码,以便它可以执行设置环境变量或更改当前目录之类的操作,那么您可以使用括号隔离子 shell 内的变量:
(
a=7
echo $a
)
# The change in a doesn't get to here
如果您要取消设置所使用的变量,则会遇到相反的问题。如果用户设置了同名的变量,那么您最终会破坏它。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)