Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
bash&x27的zsh替代方案;s声明-n_Bash_Zsh - Fatal编程技术网

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中工作。