0

シェルプログラミングで、変数と関数のアドレスを見つける方法はありますか? &xを出力すると、cまたはc ++のように、xメモリアドレスを取得できます。

4

1 に答える 1

1

それはあなたが望むものに依存します。ほとんどのシェルは、シンボリック (または「ソフト」) 参照、つまり他の変数の名前を含む変数のみをサポートしています。Korn シェル 93 には、 を使用して作成された名前参照typeset -nがありますが、アドレスは公開されていません。でそれを見てくださいman ksh。役立つかもしれません。

しかし、変数のメモリ アドレスを取得できたとしても、それをどうしますか? シェル変数は C のようにプリミティブな方法で構造化されていないため、ポインター演算は役に立ちません。アドレスをインクリメントするだけでは、配列または文字列を反復処理できませんでした。あなたができる最善のことは、その特定のシェルの特定のバージョンのメモリを調査することです。

シェルはほとんどが C で記述されているため、いつでもデバッグ ( -g) を使用してシェル ソースをコンパイルし、デバッガーを使用して接続することができます。それがあなたに何をもたらすか分からないので、私の質問は次のとおりです:なぜですか?

編集; コメントから、スタックサイズが必要だとわかります-シェル変数がヒープまたは環境ブロックに割り当てられると確信しています。

于 2012-09-24T12:17:34.253 に答える