是否可以在脚本中创建局部变量,但不使用函数?
我看到我们不能只使用local variab=1
。
任何解决方案?
答案 0 :(得分:1)
所有未标记为导出的shell变量都是创建它们的shell的本地变量。导出的变量被复制到子shell中;严格地说,它们并不真正与子壳共享,因为更改仍然是进行更改的shell的本地。
但是,一些shell结构不是子shell。特别是,函数执行不会导致创建子shell,内置source
/ .
也不会。在函数中(但不在source
d文件中),您可以通过将变量声明为本地变量来生成本地变量。
如果要在脚本中为块创建本地shell变量,可以使用(…)
语法创建子shell:
a=outside
(
# This is a subshell, so the following is local
a=inside
echo $a
)
# Back to the outer shell
echo $a
{
# This is **not** a subshell, so the following affects the outer a
a=braced
}
# Here, a has changed
echo $a
答案 1 :(得分:0)
这取决于你们当地人的意思。
如果你的意思是函数的局部性,那么没有函数显然没有意义。
但如果你的意思是脚本的本地,那么
variable=value
创建一个在您启动的流程环境中不可见的变量,除非您export
。
此外,您可以在一个shell脚本中创建子shell(例如using())并在那里创建一个新的进程,以便变量将是该进程的本地变量。