在编写sh脚本时,在脚本末尾取消设置所有先前定义的全局变量是不是一种好的做法?
例如,我myscript使用.执行我的脚本.(来源)内置,就像这样
. myscript
Run Code Online (Sandbox Code Playgroud)
执行脚本后,shell会使用脚本中定义的变量进行操作.这似乎非常糟糕(特别是如果被其他人使用).
如果可以的话,我会完全摆脱sh(或bash)中的全局变量,但更常见的是它们不是最差的解决方案:-).
Vau*_*ato 10
这并不是真正执行脚本.它正在寻找它,这使得shell在脚本中执行每个命令.如果要执行脚本,可以执行以下操作:
./myscript
Run Code Online (Sandbox Code Playgroud)
在这种情况下,脚本中设置的环境变量都不会对shell产生影响.
如果您确实需要获取脚本,以便它可以执行诸如设置环境变量或更改当前目录之类的操作,那么您可以使用括号隔离子shell中的变量:
(
a=7
echo $a
)
# The change in a doesn't get to here
Run Code Online (Sandbox Code Playgroud)
如果你要取消设置你使用的变量,你会遇到相反的问题.如果用户设置了具有相同名称的变量,那么最终会将其销毁.
| 归档时间: |
|
| 查看次数: |
1412 次 |
| 最近记录: |