bash&x27的zsh替代方案;s声明-n
我在bash&x27的zsh替代方案;s声明-n,bash,zsh,Bash,Zsh,我在bash中有一个脚本,它在函数中使用declare-n来获取对作为参数接收的变量的引用。现在我希望这个函数也能在zsh中工作 zsh中是否有替代declare-n的方法 这是我的密码: f() { declare -n inside=$1 inside="inside function" } a="outside function" f a echo "$a" 在bash中打印: 内部功能 在zsh中: f:1:坏选项:-n 您可以使用POSIX推荐的typeset而不是
bash
中有一个脚本,它在函数中使用declare-n
来获取对作为参数接收的变量的引用。现在我希望这个函数也能在zsh
中工作
zsh
中是否有替代declare-n
的方法
这是我的密码:
f() {
declare -n inside=$1
inside="inside function"
}
a="outside function"
f a
echo "$a"
在bash
中打印:
内部功能
在zsh
中:
f:1:坏选项:-n
您可以使用POSIX推荐的
typeset
而不是declare
,并且declare
是bash
唯一的语法。使用typeset
我仍然会遇到错误:f:1:错误选项:-n
declare-n
在bash中也是相对较新的。讨论备选方案,并说明如何在zsh
中执行此操作;求值“$(printf%s=%q“$ref”“$value”)”。请。是的,您确实得到了要在函数f中更改的var的“名称”。将::${(P)1::=“new value”}
(不要删除冒号)作为函数的唯一内容,以使其(仅)在zsh中工作。