从函数内访问文件级 argv

Access file-level argv from within a function

我有一个脚本,如下所示:

echo 'Hello world' # etc

function fun
   if test 1 -gt 0
      echo "$argv[1]"
   end
end

# lots of code in between

fun

我用 ./file foo --bar 调用这个文件。我希望 fun 打印 --bar。相反,它不打印任何内容,因为包含 --bar 的 argv(即文件的 argv)被函数的 argv 屏蔽,函数的 argv 没有接收任何输入。

理论上,我可以将 argv 传递给函数,如 fun $argv 中那样。但是,必须在每个函数调用中包含这一点是非常令人讨厌的(我在该文件中广泛引用了 argv)。有没有办法从文件中的函数中访问文件范围 argv 变量?

外部 argv 被内部 argv 隐藏 - 全局变量被局部变量隐藏。没有办法改变这个。

有很多解决方法,包括我推荐的方法:在执行函数之前使用一次 set -g fileargv $argv,然后在函数中使用 $fileargv