从函数内访问文件级 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
。
我有一个脚本,如下所示:
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
。