Bash 内置变量 BASH_ARGV 和 BASH_ARGC

Bash 内置变量 BASH_ARGV 和 BASH_ARGC

在第 74 页的 bash v5.0 手册中,有以下文档(以及 类似的文档BASH_ARGC)。

BASH_ARGV
一个数组变量,包含当前 bash 执行调用堆栈中的所有参数。最后一个子程序调用的最终参数位于栈顶;初始调用的第一个参数位于底部。当执行子例程时,提供的参数被推送到BASH_ARGVshellBASH_ARGV仅在扩展调试模式下设置(请参阅第 4.3.2 节 [Shopt 内置命令],第 65 页,了解 shopt 内置命令的 extdebug 选项的描述)。extdebug在 shell 启动执行脚本后进行设置,或者 extdebug未设置时引用此变量可能会导致值不一致。

我将我想了解更多的句子加粗,特别是,

  1. 除了激活扩展调试模式之外,还有什么方法可以依赖这些内置变量吗?换个角度问,什么意思可能上面最后一句是什么意思?

  2. 如果这些内置变量被认为仅用于调试(并且 1. 的答案是否定的),那么访问某些函数调用深处的脚本命令行参数的最佳方法是否正确(即在由另一个函数调用的函数中)由另一个函数调用等)是将它们之前存储到全局数组中?通过 via 传递它们"$@"原则上也是可行的,但有时不太方便。

我发现这个相关答案这确实是说

您可能必须在 shebang(例如#!/bin/bash -O extdebug)或使用shopt(例如shopt -s extdebug)打开扩展调试,但它在 bash 4.2_p37 中对我有效,无需打开它。

  1. 奖金问题。为什么有时不激活扩展调试模式也能工作?

相关内容