Bash脚本:我们可以创建一个局部变量,但不能使用函数吗?怎么样?

时间:2013-11-19 21:24:40

标签: bash shell sh

是否可以在脚本中创建局部变量,但不使用函数? 我看到我们不能只使用local variab=1。 任何解决方案?

2 个答案:

答案 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())并在那里创建一个新的进程,以便变量将是该进程的本地变量。