代码示例main.zsh
:
#!/usr/bin/env zsh
. ./my_script.zsh
my_global_var=""
output=$(my_func)
代码示例my_script.zsh
:
#!/usr/bin/env zsh
my_func(){
my_global_var="hello!" # doesn't work!
echo "my output" # return value
}
在这种情况下,如何在子shell中将my_global_var
的值设置为my_func
。我在这里尝试做的,我只是尝试在zsh
中实现一个能够通过变量替换机制$()
返回值的函数概念,但问题是如果我以这种方式实现它,我将无法从我的函数访问全局变量。我现在很困惑,也许我错误地在zsh
中实现了一个函数概念。
答案 0 :(得分:2)
你做不到。 my_func
在一个单独的流程中运行,因此无论它对my_global_var
执行什么操作都属于该流程的本地流程,main.zsh
都看不到。您的函数可以用于设置全局变量或输出要由$(...)
捕获的文本,而不是两者。