Bash 組み込み変数 BASH_ARGV と BASH_ARGC

Bash 組み込み変数 BASH_ARGV と BASH_ARGC

74ページのbash v5.0マニュアルには、次の文書(および同様の文書BASH_ARGC)があります。

BASH_ARGV
現在のbash実行呼び出しスタックのすべてのパラメータを含む配列変数。最後のサブルーチン呼び出しの最後の引数はスタックの一番上にあります。最初の呼び出しの最初の引数は一番下にあります。サブルーチンが実行されると、指定されたパラメータがにプッシュされますBASH_ARGVシェルはBASH_ARGV拡張デバッグモードでのみ設定されます。(shopt 組み込みコマンドの extdebug オプションについては、65 ページの 4.3.2 [Shopt 組み込みコマンド]を参照してください)。extdebugシェルがスクリプトの実行を開始した後に設定します。または extdebug設定されていない状態でこの変数を参照すると、値が一貫していない可能性があります。

特に、もっと知りたい文章は太字で表示しました。

  1. 拡張デバッグモードを有効にする以外に、これらの組み込み変数を使用する方法はありますか?別の角度から尋ねたらどういう意味ですか?可能上記の最後の文はどういう意味ですか?

  2. これらの組み込み変数がデバッグ専用と見なされる場合(1.の答えは「いいえ」)、特定の関数呼び出し内でスクリプトのコマンドラインパラメータにアクセスする最善の方法は正しいことです(つまり、他の関数によって呼び出される関数内で)。他の関数などによって呼び出されます。)以前はグローバル配列に保存されましたか? viaを介して渡すことも"$@"原則として可能ですが、時には不便かもしれません。

私が見つけたこの関連回答これは意味

shebang(たとえば#!/bin/bash -O extdebug)から、または次のようにshopt(たとえば)shopt -s extdebug拡張デバッグをオンにする必要があります。しかし、bash 4.2_p37では、電源を入れなくても動作します。

  1. ボーナスの質問です。拡張デバッグモードを有効にせずに動作するのはなぜですか?

ベストアンサー1

おすすめ記事