【发布时间】:2020-08-07 23:47:32
【问题描述】:
如果我有这样的函数my-func:
my-func(){
v=$1
eval $2
}
那么这是我运行my-func 123 "echo $v"得到的输出:
第一次运行:
#nothing
第二次以上运行:
123
如果我现在运行my-func 789 "echo $v",那么我第一次得到以下输出:
123
这是第二次以上:
789
那么,为什么输出延迟了一个,我该如何解决呢?
【问题讨论】:
-
"echo $v"首先运行。
-
@arundeepchohan 是的,但为什么呢?我怎样才能让它第二次运行?
-
你可以简单地在 v =$1 之后回显 $v。
-
@arundeepchohan ?但这不是
my-func(见问题顶部)已经对v=$1; eval $2所做的吗? -
请注意,
v是非本地的;默认情况下,函数内部的赋值是全局的。
标签: scope eval zsh local-variables